О спецификации HTML 4.0

1 О спецификации HTML 4.0

Содержание

  1. Организация спецификации
  2. Соглашения
    1. Элементы и атрибуты
    2. Замечания и примеры
  3. Благодарности
  4. Информация об авторском праве

1.1 Организация спецификации

Спецификация состоит из следующих разделов:

Разделы 2 и 3: Введение в HTML 4.0
Во введении описывается место языка HTML в схеме World Wide Web, приводится краткая история развития языка HTML, описывается, что можно сделать с использованием HTML 4.0 и содержатся некоторые подсказки относительно создания документов в формате HTML.

Краткое руководство по SGML дает читателям понимание отношения языка HTML к языку SGML и предоставляет информацию о чтении Определений типов документов HTML (Document Type Definition - DTD).

Разделы 4 - 24: Справочное руководство по HTML 4.0
Главным содержанием руководства является справочник по языку HTML, в котором определены все элементы и атрибуты языка.

Этот документ упорядочен по разделам, а не по грамматике языка HTML. Разделы сгруппированы в три категории: структура, представление и интерактивность. Хотя конструкции языка HTML трудно разделить на эти три категории, такая модель отражает опыт Рабочей группы HTML, говорящий о том, что разделение структуры документа и его представления обеспечивает большую эффективность документов и лучшие возможности поддержки.

Информация о языке включает следующую:

  • Какие символы могут отображаться в документе HTML.

  • Основные типы данных документа HTML.

  • Элементы, управляющие структурой документа HTML, включая текст, списки, таблицы, ссылки и объекты, изображения и апплеты.

  • Элементы, управляющие представлением документа в формате HTML, включая таблицы стилей, шрифты, цвета, горизонтальные разделители и другое визуальное представление, а также фреймы (кадры) для многооконного представления.

  • Элементы, управляющие интерактивностью документа HTML, включая формы для ввода данных пользователя и скрипты для активных документов.

  • Формальное SGML-определение HTML:

    • SGML-определение HTML.
    • Три DTD: строгое, переходное и с кадрами.
    • Список ссылок на символы.
Приложения
В первом приложении содержится информация об изменениях по отношению к HTML 3.2 с целью помочь авторам при переносе файлов в формат HTML 4.0. Во втором приложении содержатся замечания о производительности и применении, целью которых является помощь разработчикам в создании средств для использования HTML 4.0.
Ссылки
Список нормативных и информативных документов.
Указатели
Три указателя предоставляют читателям быстрый доступ к определению: понятия, элементы и атрибуты.

1.2 Соглашения

Этот документ написан читателями с двумя типами мышления: авторами и разработчиками. Мы надеемся, что спецификация предоставит авторам средства, необходимые им для создания эффективных, привлекательных и доступных документов и не обременяющие их подробностями применения HTML. Разработчики, однако, должны найти здесь всю необходимую для разработки соответствующих средств информацию.

Эту спецификацию можно использовать несколькими способами:

  • Прочесть от начала до конца. Эта спецификация начинается с общего представления языка HTML, а количество технических подробностей постепенно повышается.

  • Обращаться к необходимой информации. Для обеспечения максимальной скорости получения информации о синтаксисе и семантике в оперативную версию спецификации включены следующие возможности:
    1. Каждая ссылка на элемент или атрибут связана с его определением в спецификации. Каждый элемент или атрибут определяется только в одном месте.
    2. На каждой странице имеются ссылки на указатели, поэтому Вы всегда сможете найти определение элемента или атрибута, использовав не больше двух ссылок.

    3. На первых страницах трех разделов руководства к исходному оглавлению добавляется более подробная информация о каждом разделе.

1.2.1 Элементы и атрибуты

Названия элементов представляются символами в верхнем регистре (например, BODY). Названия атрибутов представляются символами в нижнем регистре (например, lang, onsubmit). Помните, что в HTML имена элементов и атрибутов не учитывают регистр; это используется для более легкого чтения.

В названиях элементов и атрибутов в этом документе используется разметка, поэтому агентами пользователей они могут генерироваться особым образом.

В каждом определении атрибута устанавливается тип его значения. Если имеется несколько возможных значений, приводится список значений, разделенных вертикальной чертой (|).

После информации о типе в каждом определении атрибута в квадратных скобках ("[]") указывается, учитывается ли в значениях регистр. Подробнее см. раздел информации о регистре.

1.2.2 Замечания и примеры

Информативные замечания выделены, чтобы отличаться от остального текста и могут генерироваться агентами пользователей особым образом.

Все примеры, иллюстрирующие нежелательное использование, помечены как "ПРИМЕР НЕЖЕЛАТЕЛЬНОГО ИСПОЛЬЗОВАНИЯ". В примеры нежелательного использования входят также рекомендуемые альтернативные решения. Все примеры, иллюстрирующие недопустимое использование, помечены как "ПРИМЕР НЕДОПУСТИМОГО ИСПОЛЬЗОВАНИЯ".

В примерах и замечаниях используется разметка, поэтому некоторыми агентами пользователей они могут генерироваться особым образом.

1.3 Благодарности

Спасибо всем, кто помог в создании рабочих черновых вариантов, приведших к спецификации HTML 4.0, и всем отправившим предложения и исправления.

Большое спасибо группе Web Accessibility Initiative (WAI HC) за работу по улучшению доступности HTML и Т.В. Раман (компания Adobe) за разработку доступных форм.

Авторы этой спецификации, члены Рабочей группы HTML W3C , заслуживают аплодисментов за тщательную проверку этого документа, конструктивные комментарии и труд: Джон Д. Бургер (MITRE), Стив Байрн (JavaSoft), Мартин Дж. Дюрст (Цюрихский университет), Дэниел Глазман (ElectricitÉ de France), Скотт Айзакс (Microsoft), Мюрей Малони (GRIF), Стивен Пембертон (CWI), Роберт Пернетт (Lotus), Яред Соренсен (Novell), Пауэлл Смит (IBM), Роберт Стиван (HP), Эд Тикот (Microsoft), Джеффри Веен (HotWired), Майк Векслер (Adobe), Миша Вольф (Reuters) и Лорен Вуд (SoftQuad).

Спасибо Дену Коннолли (W3C) за работу редактора и тщательное руководство в качестве председателя Рабочей группы HTML. Спасибо Салли Худаири (W3C) за ее работу над пресс-релизами.

Спасибо Дэвиду М. Абрахамсону и Роджеру Прайсу за внимательное чтение и конструктивные комментарии.

Спасибо Яну Кэррману, автору html2ps за огромную помощь в создании версии спецификации в формате Postscript.

Особую помощь W3C в София-антиполис принесли Дженет Бертот, Берт Бос, Стефан Боера, Даниель Дардельер, Ив Лафон, Хокон Ли, Крис Лилли и Кола Нахабу (Bull).

И наконец, спасибо Тиму Бернерс-Ли, без которого все это было бы невозможно.

1.4 Информация об авторском праве

Copyright © 1997 World Wide Web Consortium, (Массачусеттский технологический институт, Национальный институт исследований в области информатики и автоматизации, Университет Keio). Все права защищены.

Документы, находящиеся на сервере W3C, предоставляются обладателями авторских прав в соответствии со следующей лицензией. Получая, используя и/или копируя этот документ или документ W3C, из которого имеется ссылка на это заявление, Вы признаете, что прочли и поняли следующие условия и обязуетесь их выполнять:

Разрешение на использование, копирование и распространение содержимого этого документа или документа W3C, из которого имеется ссылка на это заявление, с помощью любых средств, с любыми целями и без отчисления авторского гонорара дается при условии, что Вы включите во ВСЕ копии этого документа или его частей следующую информацию:

  1. Ссылку на исходный документ W3C или его URI.
  2. Имеющуюся информацию об авторском праве исходного автора, а если она отсутствует, информацию в форме: "Copyright © World Wide Web Consortium, (Массачусеттский технологический институт, Национальный институт исследований в области информатики и автоматизации, Университет Keio). Все права защищены."
  3. СТАТУС документа W3C, если он существует.

Если позволяет пространство, следует включить полный текст следующего ЗАМЕЧАНИЯ. Кроме того, в любое программное обеспечение, документы и пр., созданные вследствие применения содержимого этого документа или любой его части, должна быть добавлена благодарность владельцам авторского права.

Данная лицензия не дает никаких прав изменения данного документа или создания документов, производных от него.

ДАННЫЙ ДОКУМЕНТ ПРЕДОСТАВЛЯЕТСЯ "КАК ЕСТЬ"; ОБЛАДАТЕЛИ АВТОРСКОГО ПРАВА НЕ ДАЮТ НИКАКИХ ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ ГАРАНТИЙ, ВКЛЮЧАЯ ГАРАНТИИ КОММЕРЧЕСКОЙ ВЫГОДЫ, СООТВЕТСТВИЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ, НЕНАРУШЕНИЯ АВТОРСКОГО ПРАВА ИЛИ ОБЛАДАНИЯ ИМ, НО НЕ ОГРАНИЧИВАЯСЬ ТАКОВЫМИ; ТО ЕСТЬ ОБЛАДАТЕЛИ АВТОРСКОГО ПРАВА НЕ ДАЮТ ГАРАНТИЙ ТОГО, ЧТО СОДЕРЖИМОЕ ЭТОГО ДОКУМЕНТА СООТВЕТСТВУЕТ КАКИМ-ЛИБО ЦЕЛЯМ И ТОГО, ЧТО ПРИМЕНЕНИЕ СОДЕРЖИМОГО ЭТОГО ДОКУМЕНТА НЕ НАРУШИТ АВТОРСКИХ ПРАВ, ТОРГОВОЙ МАРКИ, ПАТЕНТА ИЛИ ДРУГИХ ПРАВ ТРЕТЬЕГО ЛИЦА ИЛИ ОРГАНИЗАЦИИ.

ОБЛАДАТЕЛИ АВТОРСКОГО ПРАВА НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБОЙ ПРЯМОЙ, КОСВЕННЫЙ, СПЕЦИАЛЬНЫЙ ИЛИ ЗАКОНОМЕРНЫЙ УЩЕРБ, ПОНЕСЕННЫЙ В РЕЗУЛЬТАТЕ ИСПОЛЬЗОВАНИЯ ЭТОГО ДОКУМЕНТА ИЛИ ПРИМЕНЕНИЯ ЕГО СОДЕРЖИМОГО.

Имя и торговые марки обладателей авторского права НЕ могут использоваться в рекламе, имеющей отношение к данному документу или его содержимому без особого письменного разрешения. Авторское право на этот документ навсегда остается за его обладателями.


Указатель атрибутов HTML 4.0

Указатель атрибутов

Условные обозначения: Нежелателен, Loose DTD, Frameset DTD
Имя | Элементы | Тип | По умолчанию | Нежелат. | DTD | Комментарий
abbr | TD, TH | %Text; | #IMPLIED |  |  | сокращение для ячейки заголовка
accept-charset | FORM | %Charsets; | #IMPLIED |  |  | список поддерживаемых наборов символов
accept | INPUT | %ContentTypes; | #IMPLIED |  |  | список типов MIME для выгрузки файлов
accesskey | A, AREA, BUTTON, INPUT, LABEL, LEGEND, TEXTAREA | %Character; | #IMPLIED |  |  | клавиша доступа
action | FORM | %URI; | #REQUIRED |  |  | серверный обработчик формы
align | CAPTION | %CAlign; | #IMPLIED | Н | L | относится к таблицам
align | APPLET, IFRAME, IMG, INPUT, OBJECT | %IAlign; | #IMPLIED | Н | L | вертикальное или горизонтальное выравнивание
align | LEGEND | %LAlign; | #IMPLIED | Н | L | относится к набору полей
align | TABLE | %TAlign; | #IMPLIED | Н | L | положение таблицы относительно окна
align | HR | (left | center | right) | #IMPLIED | Н | L |
align | DIV, H1, H2, H3, H4, H5, H6, P | (left | center | right | justify) | #IMPLIED | Н | L | выравнивание текста
align | COL, COLGROUP, TBODY, TD, TFOOT, TH, THEAD, TR | (left | center | right | justify | char) | #IMPLIED |  |  |
alink | BODY | %Color; | #IMPLIED | Н | L | цвет выбранных ссылок
alt | APPLET | %Text; | #IMPLIED | Н | L | краткое описание
alt | AREA, IMG | %Text; | #REQUIRED |  |  | краткое описание
alt | INPUT | CDATA | #IMPLIED |  |  | краткое описание
archive | OBJECT | %URI; | #IMPLIED |  |  | разделенный пробелами список архивов
archive | APPLET | CDATA | #IMPLIED | Н | L | разделенный запятыми список пробелов
axis | TD, TH | CDATA | #IMPLIED |  |  | группы имен связанных заголовков
background | BODY | %URI; | #IMPLIED | Н | L | текстура и фон документа
bgcolor | TABLE | %Color; | #IMPLIED | Н | L | цвет фона для ячеек
bgcolor | TR | %Color; | #IMPLIED | Н | L | цвет фона для строки
bgcolor | TD, TH | %Color; | #IMPLIED | Н | L | цвет фона ячейки
bgcolor | BODY | %Color; | #IMPLIED | Н | L | цвет фона документа
border | IMG, OBJECT | %Length; | #IMPLIED | Н | L | толщина границы
border | TABLE | %Pixels; | #IMPLIED |  |  | толщина кадра вокруг таблицы
cellpadding | TABLE | %Length; | #IMPLIED |  |  | интервал между граничей ячейки и текстом в ней
cellspacing | TABLE | %Length; | #IMPLIED |  |  | расстояние между ячейками
char | COL, COLGROUP, TBODY, TD, TFOOT, TH, THEAD, TR | %Character; | #IMPLIED |  |  | символ выравнивания, например char=':'
charoff | COL, COLGROUP, TBODY, TD, TFOOT, TH, THEAD, TR | %Length; | #IMPLIED |  |  | смещение для символа выравнивания
charset | A, LINK, SCRIPT | %Charset; | #IMPLIED |  |  | кодировка символов связанного ресурса
checked | INPUT | (checked) | #IMPLIED |  |  | для флажков и кнопок с зависимой фиксацией
cite | BLOCKQUOTE, Q | %URI; | #IMPLIED |  |  | URI исходного документа или сообщения
cite | DEL, INS | %URI; | #IMPLIED |  |  | причина изменения
class | Все элементы, кроме BASE, BASEFONT, HEAD, HTML, META, PARAM, SCRIPT, STYLE, TITLE | CDATA | #IMPLIED |  |  | разделенный пробелами список классов
classid | OBJECT | %URI; | #IMPLIED |  |  | идентифицирует реализацию
clear | BR | (left | all | right | none) | none | Н | L | управление разбиением текста
code | APPLET | CDATA | #IMPLIED | Н | L | файл класса апплета
codebase | OBJECT | %URI; | #IMPLIED |  |  | базовый URI для classid, данных, архива
codebase | APPLET | %URI; | #IMPLIED | Н | L | необязательный базовый URI для апплета
codetype | OBJECT | %ContentType; | #IMPLIED |  |  | тип содержимого для кода
color | BASEFONT, FONT | %Color; | #IMPLIED | Н | L | цвет текста
cols | FRAMESET | %MultiLengths; | #IMPLIED |  | F | список длин, по умолчанию: 100% (1 столбец)
cols | TEXTAREA | NUMBER | #REQUIRED |  |  |
colspan | TD, TH | NUMBER | 1 |  |  | число столбцов, объединяемых в ячейке
compact | DIR, MENU | (compact) | #IMPLIED | Н | L |
compact | DL, OL, UL | (compact) | #IMPLIED | Н | L | уменьшение расстояния между элементами
content | META | CDATA | #REQUIRED |  |  | связанная информация
coords | AREA | %Coords; | #IMPLIED |  |  | разделенный запятыми список длин
coords | A | %Coords; | #IMPLIED |  |  | для использования с клиентскими изображениями-картами
data | OBJECT | %URI; | #IMPLIED |  |  | ссылка на данные объекта
datetime | DEL, INS | %Datetime; | #IMPLIED |  |  | дата и время изенения
declare | OBJECT | (declare) | #IMPLIED |  |  | объявить, но не инициализировать флаг
defer | SCRIPT | (defer) | #IMPLIED |  |  | агент пользователя может отложить выполнение скрипта
dir | Все элементы, кроме APPLET, BASE, BASEFONT, BDO, BR, FRAME, FRAMESET, HR, IFRAME, PARAM, SCRIPT | (ltr | rtl) | #IMPLIED |  |  | направление слабого/нейтрального текста
dir | BDO | (ltr | rtl) | #REQUIRED |  |  | направление
disabled | BUTTON, INPUT, OPTGROUP, OPTION, SELECT, TEXTAREA | (disabled) | #IMPLIED |  |  | в данном контексте недоступно
enctype | FORM | %ContentType; | "application/x-www- form-urlencoded" |  |  |
face | BASEFONT, FONT | CDATA | #IMPLIED | Н | L | разделенный запятыми список названий шрифтов
for | LABEL | IDREF | #IMPLIED |  |  | совпадает со значением ИД поля
frame | TABLE | %TFrame; | #IMPLIED |  |  | какие части фрейма следует генерировать
frameborder | FRAME, IFRAME | (1 | 0) | 1 |  | F | запросить границы фрейма?
headers | TD, TH | IDREFS | #IMPLIED |  |  | список ИД ячеек заголовков
height | IFRAME | %Length; | #IMPLIED |  | L | высота фрейма
height | IMG, OBJECT | %Length; | #IMPLIED |  |  | переопределение высоты
height | APPLET | %Length; | #REQUIRED | Н | L | начальная высота
height | TD, TH | %Pixels; | #IMPLIED | Н | L | высота ячейки
href | A, AREA, LINK | %URI; | #IMPLIED |  |  | URI ресурса, на который указывает ссылка
href | BASE | %URI; | #IMPLIED | Н | L | URI, служащий базовым
hreflang | A, LINK | %LanguageCode; | #IMPLIED |  |  | код языка
hspace | APPLET, IMG, OBJECT | %Pixels; | #IMPLIED | Н | L | горизонтальный gutter
http-equiv | META | NAME | #IMPLIED |  |  | имя заголовка ответа HTTP
id | Все элементы, кроме BASE, HEAD, HTML, META, SCRIPT, STYLE, TITLE | ID | #IMPLIED |  |  | уникальный ИД в переделах документа
ismap | IMG | (ismap) | #IMPLIED |  |  | использовать серверное изображение-карту
label | OPTION | %Text; | #IMPLIED |  |  | для исопльзования в иерархических меню
label | OPTGROUP | %Text; | #REQUIRED |  |  | для использования в иерархических меню
lang | Все элементы, кроме APPLET, BASE, BASEFONT, BR, FRAME, FRAMESET, HR, IFRAME, PARAM, SCRIPT | %LanguageCode; | #IMPLIED |  |  | код языка
language | SCRIPT | CDATA | #IMPLIED |  |  | имя предпочитаемого языка скрипта
link | BODY | %Color; | #IMPLIED | Н | L | цвет ссылок
longdesc | IMG | %URI; | #IMPLIED |  |  | ссылка на длинное описание (дополняет alt)
longdesc | FRAME, IFRAME | %URI; | #IMPLIED |  | F | ссылка на длинное поисание (дополняет title)
marginheight | FRAME, IFRAME | %Pixels; | #IMPLIED |  | F | высота поля в пикселах
marginwidth | FRAME, IFRAME | %Pixels; | #IMPLIED |  | F | ширина полей в пикселах
maxlength | INPUT | NUMBER | #IMPLIED |  |  | максимальное число символов в текстовом поле
media | STYLE | %MediaDesc; | #IMPLIED |  |  | для использования с этими устройствами
media | LINK | %MediaDesc; | #IMPLIED |  |  | для представления на этих устройствах
method | FORM | (GET | POST) | GET |  |  | метод HTTP, используемой для передачи формы
multiple | SELECT | (multiple) | #IMPLIED |  |  | по умолчанию используется одно выделение
name | BUTTON, TEXTAREA | CDATA | #IMPLIED |  |  |
name | APPLET | CDATA | #IMPLIED | Н | L | позволяет апплетам находить друг друга
name | SELECT | CDATA | #IMPLIED |  |  | имя поля
name | FRAME, IFRAME | CDATA | #IMPLIED |  | F | имя целевого фрейма
name | A | CDATA | #IMPLIED |  |  | конец именованной ссылки
name | INPUT, OBJECT | CDATA | #IMPLIED |  |  | передать как часть формы
name | MAP | CDATA | #REQUIRED |  |  | для ссылки в usemap
name | PARAM | CDATA | #REQUIRED |  |  | имя свойства
name | META | NAME | #IMPLIED |  |  | имя метаинформации
nohref | AREA | (nohref) | #IMPLIED |  |  | для этой области действие не назначено
noresize | FRAME | (noresize) | #IMPLIED |  | F | позволить пользователям изменять размеры фреймов?
noshade | HR | (noshade) | #IMPLIED | Н | L |
nowrap | TD, TH | (nowrap) | #IMPLIED | Н | L | отключить перенос слов
object | APPLET | CDATA | #IMPLIED | Н | L | серийный файл апплета
onblur | A, AREA, BUTTON, INPUT, LABEL, SELECT, TEXTAREA | %Script; | #IMPLIED |  |  | фокус перешел на другой элемент
onchange | INPUT, SELECT, TEXTAREA | %Script; | #IMPLIED |  |  | значение элемента изменилось
onclick | Все элементы, кроме APPLET, BASE, BASEFONT, BDO, BR, FONT, FRAME, FRAMESET, HEAD, HTML, IFRAME, ISINDEX, META, PARAM, SCRIPT, STYLE, TITLE | %Script; | #IMPLIED |  |  | нажата кнопка указующего устройства
ondblclick | Все элементы, кроме APPLET, BASE, BASEFONT, BDO, BR, FONT, FRAME, FRAMESET, HEAD, HTML, IFRAME, ISINDEX, META, PARAM, SCRIPT, STYLE, TITLE | %Script; | #IMPLIED |  |  | кнопка указующего устройства нажата дважды
onfocus | A, AREA, BUTTON, INPUT, LABEL, SELECT, TEXTAREA | %Script; | #IMPLIED |  |  | фокус переведен на элемент
onkeydown | Все элементы, кроме APPLET, BASE, BASEFONT, BDO, BR, FONT, FRAME, FRAMESET, HEAD, HTML, IFRAME, ISINDEX, META, PARAM, SCRIPT, STYLE, TITLE | %Script; | #IMPLIED |  |  | нажата клавиша на клавиатуре
onkeypress | Все элементы, кроме APPLET, BASE, BASEFONT, BDO, BR, FONT, FRAME, FRAMESET, HEAD, HTML, IFRAME, ISINDEX, META, PARAM, SCRIPT, STYLE, TITLE | %Script; | #IMPLIED |  |  | клавиша нажата и отпущена
onkeyup | Все элементы, кроме APPLET, BASE, BASEFONT, BDO, BR, FONT, FRAME, FRAMESET, HEAD, HTML, IFRAME, ISINDEX, META, PARAM, SCRIPT, STYLE, TITLE | %Script; | #IMPLIED |  |  | клавиша отпущена
onload | FRAMESET | %Script; | #IMPLIED |  | F | все фреймы загружены
onload | BODY | %Script; | #IMPLIED |  |  | документ загружен
onmousedown | Все элементы, кроме APPLET, BASE, BASEFONT, BDO, BR, FONT, FRAME, FRAMESET, HEAD, HTML, IFRAME, ISINDEX, META, PARAM, SCRIPT, STYLE, TITLE | %Script; | #IMPLIED |  |  | нажата кнопка указательного устройства
onmousemove | Все элементы, кроме APPLET, BASE, BASEFONT, BDO, BR, FONT, FRAME, FRAMESET, HEAD, HTML, IFRAME, ISINDEX, META, PARAM, SCRIPT, STYLE, TITLE | %Script; | #IMPLIED |  |  | указатель перемещен в пределах
onmouseout | Все элементы, кроме APPLET, BASE, BASEFONT, BDO, BR, FONT, FRAME, FRAMESET, HEAD, HTML, IFRAME, ISINDEX, META, PARAM, SCRIPT, STYLE, TITLE | %Script; | #IMPLIED |  |  | указатель перемещен за пределы
onmouseover | Все элементы, кроме APPLET, BASE, BASEFONT, BDO, BR, FONT, FRAME, FRAMESET, HEAD, HTML, IFRAME, ISINDEX, META, PARAM, SCRIPT, STYLE, TITLE | %Script; | #IMPLIED |  |  | указатель помещен на
onmouseup | Все элементы, кроме APPLET, BASE, BASEFONT, BDO, BR, FONT, FRAME, FRAMESET, HEAD, HTML, IFRAME, ISINDEX, META, PARAM, SCRIPT, STYLE, TITLE | %Script; | #IMPLIED |  |  | кнопка указательного устройства отпущена
onreset | FORM | %Script; | #IMPLIED |  |  | форма сброшена
onselect | INPUT, TEXTAREA | %Script; | #IMPLIED |  |  | выделен некоторый текст
onsubmit | FORM | %Script; | #IMPLIED |  |  | форма отправлена
onunload | FRAMESET | %Script; | #IMPLIED |  | F | все фреймы удалены
onunload | BODY | %Script; | #IMPLIED |  |  | документ удален
profile | HEAD | %URI; | #IMPLIED |  |  | именованный словарь или метаинформация
prompt | ISINDEX | %Text; | #IMPLIED | Н | L | текст запроса
readonly | TEXTAREA | (readonly) | #IMPLIED |  |  |
readonly | INPUT | (readonly) | #IMPLIED |  |  | для текста и паролей
rel | A, LINK | %LinkTypes; | #IMPLIED |  |  | ссылки типа вперед
rev | A, LINK | %LinkTypes; | #IMPLIED |  |  | ссылки типа назад
rows | FRAMESET | %MultiLengths; | #IMPLIED |  | F | список длин, по умолчанию: 100% (1 строка)
rows | TEXTAREA | NUMBER | #REQUIRED |  |  |
rowspan | TD, TH | NUMBER | 1 |  |  | число строк, объединяемых ячейкой
rules | TABLE | %TRules; | #IMPLIED |  |  | границы между строками и столбцами
scheme | META | CDATA | #IMPLIED |  |  | выбор формы содержимого
scope | TD, TH | %Scope; | #IMPLIED |  |  | область действия ячеек заголовка
scrolling | FRAME, IFRAME | (yes | no | auto) | auto |  | F | полоса прокрутки или ее отсутствие
selected | OPTION | (selected) | #IMPLIED |  |  |
shape | AREA | %Shape; | rect |  |  | управляет интерпретацией координат
shape | A | %Shape; | rect |  |  | для использования с клиентскими изображениями-картами
size | HR | %Pixels; | #IMPLIED | Н | L |
size | FONT | CDATA | #IMPLIED | Н | L | [+|-]nn, например, size="+1", size="4"
size | INPUT | CDATA | #IMPLIED |  |  | зависит от типа поля
size | BASEFONT | CDATA | #REQUIRED | Н | L | базовый размер шрифта для элементов FONT
size | SELECT | NUMBER | #IMPLIED |  |  | видимые строки
span | COL | NUMBER | 1 |  |  | атрибуты COL, влияющие на N столбцов
span | COLGROUP | NUMBER | 1 |  |  | число столбцов в группе, используемое по умолчанию
src | SCRIPT | %URI; | #IMPLIED |  |  | URI внешнего скрипта
src | INPUT | %URI; | #IMPLIED |  |  | для полей с изображениями
src | FRAME, IFRAME | %URI; | #IMPLIED |  | F | исходный файл содержимого фрейма
src | IMG | %URI; | #REQUIRED |  |  | URI внедряемого изображения
standby | OBJECT | %Text; | #IMPLIED |  |  | сообщение, которое отображается во время загрузки
start | OL | NUMBER | #IMPLIED | Н | L | начальный номер последовательности
style | Все элементы, кроме BASE, BASEFONT, HEAD, HTML, META, PARAM, SCRIPT, STYLE, TITLE | %StyleSheet; | #IMPLIED |  |  | связанная инфомрация о стиле
summary | TABLE | %Text; | #IMPLIED |  |  | назначение/структура для речевого вывода
tabindex | A, AREA, BUTTON, INPUT, OBJECT, SELECT, TEXTAREA | NUMBER | #IMPLIED |  |  | позиция в последовательности перехода
target | A, AREA, BASE, FORM, LINK | %FrameTarget; | #IMPLIED | Н | L | представление в этом фрейме
text | BODY | %Color; | #IMPLIED | Н | L | цвет текста документа
title | STYLE | %Text; | #IMPLIED |  |  | рекомендуемый заголовок
title | Все элементы, кроме BASE, BASEFONT, HEAD, HTML, META, PARAM, SCRIPT, STYLE, TITLE | %Text; | #IMPLIED |  |  | рекомендуемый заголовок/усиление
type | A, LINK | %ContentType; | #IMPLIED |  |  | рекомендуемый тип содержимого
type | OBJECT | %ContentType; | #IMPLIED |  |  | тип содержимого для данных
type | PARAM | %ContentType; | #IMPLIED |  |  | тип содержимого для значения при valuetype=ref
type | SCRIPT | %ContentType; | #REQUIRED |  |  | тип содержимого языка скрипта
type | STYLE | %ContentType; | #REQUIRED |  |  | тип содержимого языка стилей
type | INPUT | %InputType; | TEXT |  |  | тип ввода
type | LI | %LIStyle; | #IMPLIED | Н | L | стиль элемента списка
type | OL | %OLStyle; | #IMPLIED | Н | L | стиль нумерации
type | UL | %ULStyle; | #IMPLIED | Н | L | стиль маркера
type | BUTTON | (button | submit | reset) | submit |  |  | кнопка формы
usemap | IMG, INPUT, OBJECT | %URI; | #IMPLIED |  |  | использовать клиентское изображение-карту
valign | COL, COLGROUP, TBODY, TD, TFOOT, TH, THEAD, TR | (top | middle | bottom | baseline) | #IMPLIED |  |  | вертикальное выравнивание в ячейках
value | OPTION | CDATA | #IMPLIED |  |  | по умолчанию содержимое элемента
value | PARAM | CDATA | #IMPLIED |  |  | значение свойства
value | INPUT | CDATA | #IMPLIED |  |  | для флажков и кнопок с зависимой фиксацией
value | BUTTON | CDATA | #IMPLIED |  |  | отправляется на сервер при отправке
value | LI | NUMBER | #IMPLIED | Н | L | сброс номера последовательности
valuetype | PARAM | (DATA | REF | OBJECT) | DATA |  |  | как интерпретировать значение
version | HTML | CDATA | %HTML.Version; | Н | L | постоянная
vlink | BODY | %Color; | #IMPLIED | Н | L | цвет просмотренных ссылок
vspace | APPLET, IMG, OBJECT | %Pixels; | #IMPLIED | Н | L | вертикальный gutter
width | HR | %Length; | #IMPLIED | Н | L |
width | IFRAME | %Length; | #IMPLIED |  | L | ширина фрейма
width | IMG, OBJECT | %Length; | #IMPLIED |  |  | переопределение ширины
width | TABLE | %Length; | #IMPLIED |  |  | ширина таблицы
width | APPLET | %Length; | #REQUIRED | Н | L | начальная ширина
width | COL | %MultiLength; | #IMPLIED |  |  | задание ширины столбца
width | COLGROUP | %MultiLength; | #IMPLIED |  |  | ширина по умолчанию для вложенных COL
width | TD, TH | %Pixels; | #IMPLIED | Н | L | ширина ячейки
width | PRE | NUMBER | #IMPLIED | Н | L |


Различия между HTML 3.2 и HTML 4.0

Приложение А: Различия между HTML 3.2 и HTML 4.0

  1. Различия в элементах
    1. Новые элементы
    2. Нежелательные элементы
    3. Устаревшие элементы
  2. Различия в атрибутах
  3. Различия в доступности
  4. Различия в метаданных
  5. Различия в тексте
  6. Различия в ссылках
  7. Различия в таблицах
  8. Различия в изображениях, объектах и изображениях-картах
  9. Различия в формах
  10. Различия в таблицах стилей
  11. Различия во фреймах
  12. Различия в скриптах
  13. Различия в интернационализации

A.1 Различия в элементах

A.1.1 Новые элементы

В HTML 4.0 введены следующие новые элементы: ABBR, ACRONYM, BDO, BUTTON, COLGROUP, DEL, FIELDSET, FRAME, FRAMESET, IFRAME, INS, LABEL, LEGEND, NOFRAMES, NOSCRIPT, OBJECT, OPTGROUP, PARAM, SPAN, TBODY, TFOOT, THEAD и Q.

A.1.2 Нежелательные элементы

Следующие элементы являются нежелательными: APPLET, BASEFONT, CENTER, DIR, FONT, ISINDEX, MENU, S, STRIKE и U.

A.1.3 Устаревшие элементы

Следующие элементы являются устаревшими: LISTING, PLAINTEXT, and XMP. Вместо них авторам следует использовать элемент PRE.

A.2 Различия в атрибутах

  • Почти все атрибуты, определяющие представление документа HTML (цвета, выравнивание, шрифты, графика и т.д.) являются нежелательными, взамен рекомендуется исопльзовать таблицы стилей. В списке атрибутов в приложении указано, какие атрибут являются нежелательными.
  • Атрибуты id и class позволяют авторам назначать элементам информацию об имени и классе для таблиц стилей, якорей, скриптов, объявления объектов, общей обработки документа и т.д.

A.3 Различия в доступности

В HTML 4.0 имеется множество изменений касательно доступности, в том числе:

  • Атрибут title теперь можно устанавливать практически для каждого элемента.
  • Авторы могут указыват длинные описания таблиц, изображений и фреймов (см. атрибут longdesc).

A.4 Различия в метаданных

Теперь авторы могут определять профили с описаниями о метаданных, заданных в элементах META или LINK.

A.5 Различия в тексте

  • Новые функции интернационализации позволяют авторам определять направление и язык текста.
  • Элементы INS и DEL позволяют размечать изменения в документах.
  • Элементы ABBR и ACRONYM позволяют размечать в документах сокращения и акронимы.

A.6 Различия в ссылках

  • Атрибут id позволяет сделать любой элемент целевым якорем ссылки.

A.7 Различия в таблицах

Модель таблиц HTML 4.0 происходит из работы над HTML+ и начлаьного черновика HTML3.0. Прошлая по просьбам провайдеров информации модель расширена следующим образом:

  • Авторы могут определять таблицы, которые будут отображаться последовательно по мере получения данных агентом пользователя.
  • Авторы могут определять таблицы, более доступные пользвоателям с невизуальными агентами.
  • Авторы могут определять таблицы с фиксированными заголовками и сносками. Агенты пользователей могут использовать это преимущество при прокрутке больших таблиц или при представлении на устройствах со страничной организацией.

Модель таблиц HTML 4.0 также обеспечивает необязательные настройки по умолчанию в зависимости от столбцов для выравнивания, большую гибкость при определении границ и обрамления таблицы и возможность выравнивания по определенным символам. Однако ожидается, что задачу представления таблиц в ближайшем будущем возьмут на себя таблицы стилей.

Кроме того, основной целью было обеспечение совместимости с широко используемой компанией Netscape реализацией таблиц. Другой целью было упрощение импортирования таблиц в соответствии с моделью SGML CALS. В последнем черновике атрибут align совместим с последними версиями наиболее популярныз браузеров. Внесены некоторые разъяснения в роль атрибута dir и рекомендуемое поведение в случае, если используются смешанные абсолютные и относительные ширины столбцов.

Введен новый элемент, COLGROUP, позволяющий группировать наборы столбцов с различными свойствами ширины и выравнивания, определяемыми одним или несколькими элементами COL. По сравнению с предыдущими черновиками, разъяснена семантика элемента COLGROUP, а rules="basic" заменено rules="groups".

Атрибут style используется как средство расширения свойств, связанных с группами ячеек. Например, стиль линии: точечная, двойная, тонкая/толстая и т.д.; цвет/заливка для внутреннего содержимого; поля ячеек и информация о шрифтах. Это является темой спецификации таблиц стилей.

Атрибуты frame и rules изменены во избежание SGML name clashes друг с другом и во избежание clashes с атрибутами align и valign. Мотивом для этих изменений также послужило желание избежать проблем в будущем, если эта спецификация будет расширена и будет допускать атрибуты frame и rules в других элементах таблиц.

A.8 Различия в изображениях, объектах и изображениях-картах

  • Элемент OBJECT используется для общего включения объектов.
  • Элементы IFRAME и OBJECT позволяют авторам создавать внедренные документы.
  • Атирбут alt обязателен для элементов IMG и AREA.
  • Механизм создания изображений-карт теперь позволяет авторам создавать более доступные изображения-карты. Модель содержимого элемента MAP по этой причине изменилась.

A.9 Различия в формах

В этой спецификации вводится несколько новых атрибутов и элементов, относящихся к формм:

  • Атрибут accesskey позволяет авторам определить прямой доступ с клавиатуры к управляющим элементам формы.
  • Атрибут disabled позволяет авторам отключить управляющие элементы формы.
  • Атрибут readonly позволяет авторам звпретить изменение управляющих элементов формы.
  • Элемент LABEL связывает метку с определенным управляющим элементом формы.
  • Элемент FIELDSET группирует связанные поля вместе и, вместе с элементом LEGEND, может использоваться для присвоения имени группе. Оба эти новых элемента обеспечивают лучшее представление и интерактивность. Речевые браузеры могут лучше описывать формы, а графические браузеры могут сделать действующими метки.
  • Новый набор атрибутов вместе со скриптами позволяет провайдерам проверять ввод данных пользователем.
  • Элементы BUTTON и INPUT, у которых для атрибута type установлено значение "button", могут использоваться вместе со href="../interact/scripts.html">скриптами для создания более разнообразных форм.
  • Элемент OPTGROUP позволяет авторам группировать пункты меню в элементе SELECT, что особенно важно для доступности форм.
  • дополнительные изменения в области интернационализации.

A.10 Различия в таблицах стилей

HTML 4.0 поддерживает более обширный набор дескрипторов устройств, так что авторы могут писать таблицы стилей в зависимости от устройств.

A.11 Различия во фреймах

HTML 4.0 поддерживает документы с фреймами и встроенные фреймы.

A.12 Различия в скриптах

Многие элементы теперь имеют атрибуты для событий, которые могут объединяться со скриптами; при наступлении события выполняется скрипт (например, при загрузке документа, при щелчке мыши и т.д.).

A.13 Различия в интернационализации

В HTML 4.0 объединяются рекомендации [RFC2070] по интернационализации HTML.

Однако эта спецификация и [RFC2070] отличаются следующим образом:

  • Атрибут accept-charset теперь определяется для элемента FORM, а не для TEXTAREA и INPUT.
  • В спецификации HTML 4.0 даются дополнительные пояснения относительно двунаправленного алгоритма.
  • Использование элемента CDATA для определения элементов SCRIPT и STYLE не сохраняет способности транскодирования документов to, как описано в разделе 2.1 [RFC2070].


Представление документа в формате HTML

5 Представление документа в формате HTML

  1. Набор символов документа
  2. Кодировки символов
    1. Выбор кодировки
      • Замечания об определенных кодировках
    2. Указание кодировки символов
  3. Ссылки на символы
    1. Числовые ссылки на символы
    2. Комбинации ссылок на символы
  4. Неотображаемые символы

В этой главе обсуждается, как документы в формате HTML представляются на компьютере и в Интернет.

Раздел набор символов документа относится к вопросу об абстрактных символах, которые могут входить в состав документа в формате HTML. В число этих символов входят латинская буква "A", кириллическая буква "I", китайский иероглиф "вода" и т.д.

Раздел кодировки символов относится к вопросу о том, как эти символы могут быть представлены в файле или во время передачи по Интернет. Поскольку некоторые кодировки могут прямо не представлять все символы, которые автор захочет включить в документ, HTML предлагает другие механизмы, называемые ссылками на символы, для ссылки на любой символ.

Поскольку в человеческих языках имеется огромное количество символов и множество способов их представления, следует позаботиться о том, чтобы эти документы могли понимать агенты пользователей во всем мире.

5.1 Набор символов документа

Для обеспечения возможность взаимодействия сетей SGML требует от каждого приложения (включая HTML) указания набора символов документа. Документ включает:

  • Репертуар: Набор абстрактных символов,, таких как латинская буква "A", кириллическая буква "I", китайский иероглиф "вода" и т.д.
  • Коды: Набор целочисленных ссылок на символы репертуара.

Каждый документ SGML (включая каждый документ HTML) - это последовательность символов из репертуара. Компьютерные системы идентифицируют каждый символ по его коду; например, в наборе символов ASCII коды 65, 66 и 67 означают символы 'A', 'B' и 'C' соответственно.

Набора символов ASCII недостаточно для такой глобальной информационной системы, как Web, поэтому HTML использует более полный набор символов, называемый Универсальным набором символов (Universal Character Set - UCS), и определенный в [ISO10646]. Этот стандарт определяет репертуар тысяч символов, используемых во всем мире.

Набор символов, определенный в [ISO10646] - это посимвольный эквивалент Unicode 2.0 ([UNICODE]). Оба эти стандарта время от времени обновляются, пополняются новыми символами, об изменениях следует узнавать на соответствующих серверах Web. В этой спецификации ISO/IEC-10646 или Unicode означают этот самый набор символов. Однако в спецификации HTML Unicode также упоминается при обсуждении других вопросов, таких как алгоритм двунаправленного текста.

Набора символов документа, однако, недостаточно, чтобы агенты пользователей могли корректно интерпретировать документы HTML при типичном обмене - закодированные как последовательность байт в файле или во время передачи по сети. Агенты пользователя должны также знать кодировки символов, которые использовались для преобразования потока символов документа в поток байт.

5.2 Кодировки символов

Кодировки символов в этой спецификации имеют другие названия в других спецификациях (что может вызвать некоторую путаницу). Однако это понятие в Интернет означает примерно одно и то же. Одно и то же имя -- "charset - набор символов" - используется в заголовках протоколов, атрибутах и параметрах, ссылающихся на символы и использующих одни и те же значения из [IANA] реестра (полный список см. в разделе [CHARSETS]).

Параметр "charset" идентифицирует кодировку символов, которая является способом преобразования последовательности байт в последовательность символов. Это преобразование естественно вписывается в схему деятельности Web: серверы отправляют документы HTML агентам пользователей в виде потока байт; агенты пользователей интерпретируют их как последовательность символов. Способы преобразования могут меняться от простого соответствия один к одному до сложных схем или алгоритмов переключения.

Простой техники кодировки "один байт - один символ" недостаточно для текстовых строк с таким широким репертуаром символов, как [ISO10646]. Кроме кодировок всего набора символов (например, UCS-4), имеются некоторые другие кодировки частей [ISO10646].

5.2.1 Выбор кодировки

Средства разработки (например, текстовые редакторы) могут кодировать документы HTML в кодировках по своему выбору, и этот выбор существенно зависит от соглашений, используемых системным программным обеспечением. Эти средства могут использовать любую удобную кодировку, включающую большинство символов в документе, при условии, что кодировка корректно помечена. Некоторые символы, не включенные в эту кодировку, можно представить с помощью ссылок на символы. Это всегда относится к набору символов документа, а не к кодировке символов.

Серверы и прокси могут изменять кодировку символов (что называется транскодированием) на лету для выполнения запросов агентов пользователей (см. раздел 14.2 [RFC2068], заголовок запроса HTTP "Accept-Charset"). Серверы и прокси не должны обслуживать документ в кодировке, включающей весь набор символов документа.

Широко используемые в Web кодировки - ISO-8859-1 (также называется "Latin-1"; используется для большинства западноевропейских языков), ISO-8859-5 (с поддержкой кириллицы), SHIFT_JIS (японская кодировка), EUC-JP (еще одна японская кодировка) и UTF-8 (вариант кодировки ISO 10646, использующий разное число байт для разных символов). Названия кодировок символов не учитывают регистр, так что, например, "SHIFT_JIS", "Shift_JIS" и "shift_jis" эквивалентны.

Эта спецификация не определяет, какие кодировки символов должен поддерживать агент пользователя.

Соответствующие агенты пользователей должны корректно отображать в Unicode все символы в любых кодировках, которые они могут распознавать.

Замечания об определенных кодировках

Когда текст HTML передается в UTF-16 (charset=UTF-16), текстовые данные должны передаваться в сетевом порядке байт ("big-endian", байт высшего порядка - первый) в соответствии с [ISO10646], раздел 6.3 и [UNICODE], положение C3, страница 3-1.

Более того, чтобы повысить вероятность правильной интерпретации, рекомендуется передавать документы UTF-16, всегда начиная с символа НЕРАЗДЕЛЯЮЩИЙ ПРОБЕЛ НУЛЕВОЙ ШИРИНЫ (шестнадцатеричный код FEFF, также называется Меткой порядка байтов (Byte Order Mark - BOM)), который при обращении байт становится шестнадцатеричным FFFE, никогда не назначаемым символом. Таким образом, агент пользователя, получивший шестнадцатеричный код FFFE в качестве первых байтов текста будет знать, что в остальном тексте байты нужно обратить.

Не следует использовать формат трансформации UTF-1 [ISO10646] (зарегистрированный IANA как ISO-10646-UTF-1). Информацию об ISO 8859-8 и двунаправленном алгоритме см. в разделе двунаправленности и кодировки символов.

5.2.2 Указание кодировки символов

Как сервер определяет, какая кодировка символов применяется в документе? Некоторые серверы проверяют первые несколько байт документа или сверяются с базой данных известных файлов и кодировок. Многие современные серверы Web предоставляют администраторам больше возможностей управления конфигурацией набора символов, чем старые серверы. Администраторы серверов Web должны при возможности использовать следующие механизмы для отправки параметра "charset", но должны позаботиться о том, чтобы не установить для документов ошибочное значение параметра "charset".

Как агент пользователя узнает, какая использовалась кодировка символов? Эту информацию предоставляет сервер. Лучшим способом проинформировать агента пользователя о кодировке символов документа - использовать параметр "charset" в поле заголовка "Content-Type" протокола HTTP ([RFC2068], разделы 3.4 и 14.18) Например, следующий заголовок HTTP объявляет, что используется кодировка EUC-JP:

Content-Type: text/html; charset=EUC-JP

Определение text/html см. в разделе соответствие.

Протокол HTTP ([RFC2068], раздел 3.7.1) считает ISO-8859-1 кодировкой символов по умолчанию, если параметр "charset" в поле заголовка "Content-Type" отсутствует. На практике эта рекомендация бесполезна, поскольку некоторые серверы не позволяют отправлять параметр "charset", а некоторые могут не быть сконфигурированы для отправки этого параметр. Поэтому агенты пользователей не должны предполагать никакого значения параметра "charset".

Для указания ограничений сервера или конфигурации документы HTML могут включать явную информацию о кодировке символов документа; для предоставления такой информации агентам пользователя может использоваться элемент META.

Например, чтобы указать, что кодировкой символов в текущем документе является "EUC-JP", включите следующее объявление META:

<META http-equiv="Content-Type" content="text/html; charset=EUC-JP">

Объявление META должно использоваться, только если кодировка символов упорядочена так, что символы ASCII стоят на своем месте (по крайней мере, при разборе элемента META). Объявления META должны быть в тексте как можно раньше в элементе HEAD.

В случаях, когда ни протокол HTTP, ни элемент META не предоставляют информации о кодировке документа, HTML предоставляет атрибут charset для некоторых элементов. Объединив все эти механизмы, автор может существенно повысить шансы на то, что, когда пользователь загружает ресурс, агент пользователя распознает кодировку символов.

Подводя итоги, соответствующие агенты пользователей при определении кодировки символов документа (от высшего приоритета к низшему) должны руководствоваться следующими источниками в соответствии с приоритетом:

  1. Параметр "charset" протокола HTTP в поле "Content-Type".
  2. Объявление META, в котором для "http-equiv" установлено "Content-Type" и установлено значение для "charset".
  3. Атрибут charset устанавливается на элемент, обозначающий внешний ресурс.

Кроме этого списка приоритетов, агент пользователя может использовать эвристические установки и установки пользователя. Например, многие агенты пользователей используют эвристику для распознавания различных кодировок, используемых для японского языка. Агенты пользователей обычно имеют определяемую пользователем локальную кодировку по умолчанию, которую они используют, если нет указаний кодировки.

Агенты пользователей могут обеспечивать механизм, позволяющий пользователям изменять некорректную информацию о наборе символов. Однако если агент пользователя предлагает такой механизм, он должен предлагать его только для просмотра, а не для изменения, во избежание создания Web-страниц с некорректным параметром "charset".

Примечание. Если в каком-то приложении нужно использовать символы, не входящие в кодировку [ISO10646], этим символам должна быть назначена персональная зона во избежание конфликтов с настоящей или будущими версиями стандарта. Однако это не рекомендуется из соображений переносимости.

5.3 Ссылки на символы

Данная кодировка символов может не содержать все символы из набора символов документа. Для таких кодировок или для таких конфигураций оборудования и программного обеспечения, не позволяющих пользователям вводить определенные символы, авторы могут использовать ссылки на символы SGML. Ссылки на символы - это независимый от кодировки механизм ввода любых символов.

Ссылки на символы в HTML могут принимать две формы:

  • Числовые ссылки на символы (десятичные или шестнадцатеричные).
  • Ссылки на комбинации символов.

Ссылки на символы в комментариях не имеют значения; они являются только данными комментариев.

Примечание. HTML обеспечивает другие способы представления символов, в частности, встроенные изображения.

Примечание. В SGML можно в некоторых случаях не использовать заключительный символ ";" после ссылки на символы (например, в символе переноса строки или непосредственно перед тэгом). В других обстоятельствах их нельзя удалять (например, в середине слова). Мы предлагаем использовать ";" всегда во избежание проблем с агентами пользователей, для которых этот символ обязателен.

5.3.1 Числовые ссылки на символы

Числовые ссылки на символы указывают код символа в наборе символов документа. Числовые ссылки на символы могут также принимать две формы:

  • Синтаксис "&#D;", где D - десятичное число, указывает символ Unicode с десятичным номером D.
  • Синтаксис "&#xH;" или "&#XH;", где H - шестнадцатеричное число, указывает на символ Unicode с шестнадцатеричным номером H. Шестнадцатеричные числовые ссылки учитывают регистр.

Вот некоторые примеры числовых ссылок на символы:

  • &#229; (десятичное) представляет букву "a" с кружком сверху (используемую, например, в норвежском языке).
  • &#xE5; (шестнадцатеричное) представляет тот же символ.
  • &#Xe5; (шестнадцатеричное) представляет тот же символ.
  • &#1048; (десятичное) представляет кириллическую заглавную букву "I".
  • &#x6C34; (шестнадцатеричное) представляет китайский иероглиф "вода".

Примечание. Хотя шестнадцатеричное представление не определено в [ISO8879], оно ожидается в новой версии, как описано в [WEBSGML]. Это соглашение особенно полезно, поскольку стандарты символов обычно используют шестнадцатеричные представления.

5.3.2 Комбинации ссылок на символы

Чтобы дать авторам более инициативный способ использования символов, HTML предлагает набор character entity references. Комбинации ссылок на символы используют символические имена, так что авторам не придется запоминать коды. Например, комбинация &aring; обозначает символ "a" нижнего регистра с кружком сверху; "&aring;" легче запомнить, чем &#229;.

HTML 4.0 не определяет character entity reference для каждого символа. Например, для кириллической буквы "I" нет character entity reference. См. полный список ссылок на символы, определенные в HTML 4.0.

Комбинации ссылок на символы учитывают регистр. Так, &Aring; указывает на другой символ (A с кружком верхнего регистра), а не на &aring; (a с кружком нижнего регистра).

Четыре ссылки нужно упомянуть специально, поскольку они часто используются для указания специальных символов:

  • "&lt;" представляет знак <.
  • "&gt;" представляет знак >.
  • "&amp;" представляет символ &.
  • "&quot; представляет знак ".

Авторы, которые хотят поместить в текст символ "<", должны использовать ссылку "&lt;" (десятичный код ASCII 60) во избежание возможной путаницы с началом тэга (открывающий разделитель начального тэга). Точно так же следует использовать "&gt;" (десятичный код ASCII 62) вместо ">", чтобы избежать проблем со старыми версиями агентов пользователей, некорректно принимающих их за окончание тэга (закрывающий разделитель тэга).

Авторам следует использовать "&amp;" (десятичный код ASCII 38) вместо "&" во избежание путаницы со ссылками на символы (открывающий разделитель entity reference). Авторам также следует использовать "&amp;" в значениях атрибутов, поскольку ссылки на символы внутри значений атрибута CDATA разрешены.

Некоторые авторы используют character entity reference "&quot;" для кодирования экземпляров двойных кавычек ("), поскольку этот символ может использоваться для разделения значений атрибутов.

5.4 Неотображаемые символы

Возможно, агент пользователя не сможет отобразить все символы в документе, например, из-за отсутствия соответствующего шрифта или если символ имеет значение, которое не может быть выражено во внутренней кодировке агента пользователя и т.д.

Поскольку в этом случае есть несколько вариантов, этот документ не предписывает определенной тактики. В зависимости от применения непечатные символы могут также обрабатываться дополнительной системой отображения, а не самим приложением. В случае более сложного поведения, например, настроенного для определенного сценария или языка, рекомендуем следующее поведение для агентов пользователей:

  1. Примите явно видимый, но незаметный механизм для предупреждения пользователя об отсутствующих ресурсах.
  2. Если отсутствующие символы представляются в другом числовом представлении, используйте шестнадцатеричную (не десятичную) форму, поскольку эта форма используется в стандартах наборов символов.


Соответствие: требования и рекомендации

4 Соответствие: требования и рекомендации

  1. Определения
  2. SGML
  3. Тип содержимого text/html

В этом разделе мы начинаем спецификацию HTML 4.0, начиная с договора между авторами, документами, пользователями и агентами пользователей.

Ключевые слова "НУЖНО", "НЕ НУЖНО", "НЕОБХОДИМО", "СЛЕДУЕТ", "НЕ СЛЕДУЕТ", "РЕКОМЕНДУЕТСЯ", "ВОЗМОЖНО" и "НЕОБЯЗАТЕЛЬНО" в этом документе следует интерпретировать, как описано в [RFC2119]. Однако для простоты чтения эти слова в данной спецификации напечатаны не в верхнем регистре.

Иногда авторы этой спецификации дают рекомендации для пользователей и их агентов. Эти рекомендации не являются нормативными и соответствие этой спецификации не зависит от их реализации. Эти рекомендации содержатся в выражениях "Мы рекомендуем...", "Эта спецификация рекомендует..." и подобных им.

4.1 Определения

Документ HTML
Документ HTML - это документ SGML, отвечающий ограничениям, налагаемым данной спецификацией.
Автор
Автор - это человек или программа, пишущая или генерирующая документы в формате HTML. Средство разработки - это отдельный случай автора, а именно программа, генерирующая код HTML.

Мы рекомендуем авторам создавать документы, соответствующие строгому DTD, а не другим DTD, определяемым этой спецификацией. Подробнее о DTD, определенных в HTML 4.0, см. в разделе информация о версии.

Пользователь
Пользователь - это человек, взаимодействующий с агентом пользователя для просмотра, прослушивания или другого использования сгенерированного документа в формате HTML.
Агент пользователя
Агент пользователя - это любое устройство, интерпретирующее документы в формате HTML. Агенты пользователя включают визуальные браузеры (текстовые и графические), невизуальные браузеры (аудио, Бройля), поисковые машины, прокси и т.д.

Соответствующий агент пользователя для HTML 4.0 - это агент, отвечающий обязательным условиям ("должно") этой спецификации, включая следующие:

  • Агент пользователя должен избегать наложения произвольных ограничений длины на литералы значений атрибутов (см. подраздел о возможностях в разделе Объявление SGML). Вводную информацию по атрибутам SGML можно получить в разделе определения атрибутов.
  • Агент пользователя должен гарантировать, что генерация изображения не изменяется в связи с наличием или отсутствием начальных и конечных тэгов, если в HTML DTD указывается, что они не обязательны. Вводную информацию об элементах SGML см. в разделе определения элементов.
  • Для совместимости с предыдущими версиями мы рекомендуем, чтобы средства интерпретации HTML 4.0 поддерживали HTML 3.2 (см. [HTML32]) и HTML 2.0 (см. [RFC1866]).
Ошибочные состояния
В этой спецификации не определяется, как соответствующие ей агенты пользователя обрабатывают общие ошибочные состояния, включая действия в случае, если они встречают элементы, атрибуты, значения атрибутов или комбинаций, не указанные в этом документе.

Однако для получения информации о рекомендуемой обработке ошибок обратитесь к информации о недопустимых документах.

Нежелательные
Нежелательный элемент или атрибут - это элемент, устаревший вследствие применения новых конструкций. Нежелательные элементы определены справочного руководства и явно помечены как нежелательные. Нежелательные элементы могут устареть в будущих версиях HTML.

Агентам пользователя следует по-прежнему поддерживать нежелательные элементы для обеспечения совместимости с предыдущими версиями.

В определениях элементов и атрибутов явно указано, если они нежелательны.

В этой спецификации содержатся примеры, показывающие, как можно избежать использования нежелательных элементов. В большинстве случаев это зависит от поддержки агентом пользователя таблиц стилей. В общем случае, авторам следует использовать таблицы стилей для получения стилистических эффектов и эффектов форматирования вместо атрибутов представления HTML. Атрибуты представления HTML нежелательны, когда существует альтернатива таблиц стилей (см., например, [CSS1]).

Устаревшие
Устаревший элемент или атрибут - это элемент или атрибут, поддержка которых агентами пользователя не гарантируется. Устаревшие элементы не определяются в этой спецификации, но перечислены в разделе изменений справочного руководства.

4.2 SGML

HTML 4.0 - это применение SGML, соответствующее международному стандарту ISO 8879 -- Standard Generalized Markup Language SGML (определенному в [ISO8879]).

Примеры в тексте соответствуют строгим определениям типа документа, если пример не относится к элементам или атрибутам, определенным переходным определением типа документа или определением типа документа с кадрами. Для краткости большая часть примеров в данной спецификации не начинается с объявления типа документа, обязательного для начала любого документа в формате HTML.

Фрагменты DTD в определениях элементов приводятся из строгих определений типа документа, кроме элементов, относящихся к кадрам.

Подробную информацию об использовании строгих, переходных DTD или DTD с кадрами см. в разделе информация о версии HTML.

Комментарии в HTML 4.0 DTD не имеют нормативного значения; они используются только для информации.

Агенты пользователя не должны генерировать инструкции обработки SGML (например, <?full volume>) или комментарии. Подробнее об этой и других возможностях SGML, которые допустимы в HTML, но не поддерживаются широко агентами пользователя, обратитесь к разделу возможности SGML с ограниченной поддержкой.

4.3 Тип содержимого text/html

Документы HTML отправляются через Интернет в виде последовательности байтов, сопровождаемой информацией о кодировке (описанной в разделе кодировки символов). Структура передачи, называемая message entity, определяется [RFC2045]) и [RFC2068]. message entity с типом содержимого "text/html" представляет документ в формате HTML.

Тип содержимого для документов HTML определяется следующим образом:

Имя типа содержимого:
text
Имя подтипа содержимого:
html
Обязательные параметры:
нет
Необязательные параметры:
charset
Кодировка:
разрешены все кодировки
Безопасность:
См. замечания о безопасности

Необязательный параметр "charset" обозначает кодировку символов, используемую для представления документа HTML в качестве последовательности байт. Допустимые значения этого параметра определены в разделе кодировки символов. Хотя этот параметр необязателен, рекомендуется всегда указывать его.


Спецификация HTML 4.0

Рекомендация W3C 18 декабря 1997

Автор перевода: Юлия Поданева
Оригинал данного перевода находится здесь

Эта версия:
http://www.w3.org/TR/REC-html40-971218
Последняя версия:
http://www.w3.org/TR/REC-html40
Предыдущая версия:
http://www.w3.org/TR/PR-html40-971107
Редакторы:
Dave Raggett <dsr@w3.org>
Arnaud Le Hors <lehors@w3.org>
Ian Jacobs <ij@w3.org>

Введение

Данная спецификация определяет HyperText Markup Language (Язык разметки гипертекстов - HTML) версии 4.0 - язык, который используется для публикаций в World Wide Web. Кроме текстовых, мультимедийных возможностей и гиперссылок, присутствующих в предыдущих версиях языка HTML, HTML 4.0 поддерживает новые мультимедийные возможности, скрипты, таблицы стилей, улучшенную печать и более доступные людям с физическими недостатками документы. В версии HTML 4.0 также успешно реализована интернационализация документов, целью которой является сделать Паутину действительно всемирной.

HTML 4.0 - это приложение SGML, соответствующее Международному стандарту ISO 8879 -- Standard Generalized Markup Language [ISO8879].

Статус данного документа

Данный документ просматривался членами W3C и другими заинтересованными лицами и организациями, и одобрен Директором в качестве Рекомендации W3C. Это постоянный документ; он может использоваться в качестве справочника или приводиться в других документах в качестве нормативного. Ролью W3C в этой рекомендации является привлечение внимания к этой спецификации и расширение сферы ее применения. Это расширяет функциональность и возможность взаимодействия в Web.

W3C рекомендует пользователям и авторам (в особенности средствам создания документов) использовать версию HTML 4.0 вместо HTML 3.2 (см. [HTML32]). Для обеспечения совместимости с предыдущими версиями W3C также рекомендует для средств интерпретации HTML 4.0 поддержку HTML 3.2 и HTML 2.0.

Список текущих Рекомендаций W3C и других технических документов можно найти по адресу http://www.w3.org/TR.

Дискуссия относительно функций HTML происходит по адресу www-html@w3.org.

Доступные форматы

Рекомендацию W3C HTML 4.0 можно также получить в следующих форматах:

Текстовый файл:
http://www.w3.org/TR/REC-html40-971218/html40.txt (723 Кб),
Файл gzip tar, содержащий документы в формате HTML:
http://www.w3.org/TR/REC-html40-971218/html40.tgz (339 Кб),
Файл zip, содержащий документы в формате HTML (это файл '.zip', а не '.exe'):
http://www.w3.org/TR/REC-html40-971218/html40.zip (372 Кб),
Файл в формате Postscript:
http://www.w3.org/TR/REC-html40-971218/html40.ps (4.4 Мб, 363 страницы),
Файл в формате PDF:
http://www.w3.org/TR/REC-html40-971218/html40.pdf (2.1 Мб).

В случае расхождений электронной и печатной форм спецификации следует использовать электронную версию.

Языки

Единственной нормативной версией является английская версия данного документа. Однако переводы этого документа можно найти по адресу http://www.w3.org/MarkUp/html40-updates/translations.html.

Ошибки

Список обнаруженных в спецификации ошибок находится по адресу http://www.w3.org/MarkUp/html40-updates/html40-errata.html

Об ошибках, найденных в этом документе, сообщайте по адресу www-html-editor@w3.org.

Содержание

  1. О спецификации HTML 4.0
    1. Организация спецификации
    2. Соглашения, принятые в документе
      1. Элементы и атрибуты
      2. Замечания и примеры
    3. Благодарности
    4. Информация об авторском праве
  2. Введение в HTML 4.0
    1. Что такое World Wide Web?
      1. Введение в URI
      2. Идентификаторы фрагментов
      3. Относительные URI
    2. Что такое HTML?
      1. Краткая история HTML
    3. HTML 4.0
      1. Интернационализация
      2. Доступность
      3. Таблицы
      4. Составные документы
      5. Таблицы стилей
      6. Скрипты
      7. Печать
    4. Создание документов в формате HTML 4.0
      1. Разделение структуры и представления
      2. Универсальность доступа к Web
      3. Помощь агентам пользователей в последовательном создании изображений
  3. Об SGML и HTML
    1. Введение в SGML
    2. Конструкции SGML, используемые в HTML
      1. Элементы
      2. Атрибуты
      3. Ссылки на символы
      4. Комментарии
    3. Как читать HTML DTD
      1. Комментарии DTD
      2. Определение комбинаций параметров
      3. Объявления элементов
        • Определения модели содержимого
      4. Объявления атрибутов
        • Комбинации DTD и определения атрибутов
        • Логические атрибуты
  4. Соответствие: требования и рекомендации
    1. Определения
    2. SGML
    3. Тип содержимого text/html
  5. Представление документа в формате HTML - Наборы символов, кодировки символов и entities
    1. Набор символов документа
    2. Кодировки символов
      1. Выбор кодировки
        • Замечания о некоторых кодировках
      2. Указание кодировки
    3. Ссылки на символы
      1. Числовые ссылки на символы
      2. Комбинации ссылок на символы
    4. Неотображаемые символы
  6. Основные типы данных HTML - Информация о символах, цветах, длинах, URI, типах содержимого и т.д.
    1. Информация о регистре
    2. Основные типы SGML
    3. Текстовые строки
    4. URI
    5. Цвета
      1. Замечания об использовании цветов
    6. Длины
    7. Типы содержимого (типы MIME)
    8. Коды языков
    9. Кодировки
    10. Отдельные символы
    11. Дата и время
    12. Типы ссылок
    13. Дескрипторы устройств
    14. Данные сценариев
    15. Данные таблиц стилей
    16. Целевые имена кадров
  7. Глобальная структура документа в формате HTML - Разделы HEAD и BODY документа
    1. Введение в структуру документа HTML
    2. Информация о версии HTML
    3. The HTML element
    4. Заголовок документа
      1. Элемент HEAD
      2. Элемент TITLE
      3. Атрибут title
      4. Метаданные
        • Указание метаданных
        • Элемент META
        • Профили метаданных
    5. Тело документа
      1. Элемент BODY
      2. Идентификаторы элементов: атрибуты id и class
      3. Элементы фровня блока и встроенные элементы
      4. Группировка элементов: элементы DIV и SPAN
      5. Заголовки: элементы H1, H2, H3, H4, H5, H6
      6. Элемент ADDRESS
  8. Информация о языке и направление текста - Тексты на различных языках
    1. Указание языка содержимого: атрибут lang
      1. Коды языков
      2. Наследование кодов языков
      3. Интерпретация кодов языков
    2. Указание направления текста и таблиц: атрибут dir
      1. Введение в двунаправленный алгоритм
      2. Наследование инфомрации о направлении текста
      3. Устанока направления внедренного текста
      4. Приоритет над двунаправленным алгоритмом: элемент BDO
      5. Ссылки на символы для управления направлением и объединением
      6. Таблицы стилей и двунаправленность
  9. Текст - Абзацы, строки и фразы
    1. Неоображаемые символы
    2. Структурированный текст
      1. Элементы фраз: EM, STRONG, DFN, CODE, SAMP, KBD, VAR, CITE, ABBR и ACRONYM
      2. Кавычки: элементы BLOCKQUOTE и Q
        • Отображение информации в кавычках
      3. Верхние и нижние индексы: элементы SUB и SUP
    3. Строки и абзацы
      1. Абзацы: элементы P
      2. Управление переходом на следующую строку
        • Принудительный переход на следующую строку: элемент BR
        • Запрет перехода на новую строку
      3. Переносы
      4. Форматированный текст: элемент PRE
      5. Визуальное представление абзацев
    4. Разметка изменений в документе: элементы INS и DEL
  10. Списки - Неупорядоченные, упорядоченные списки и списки определений
    1. Введение в списки
    2. Неупорядоченные списки (UL), упорядоченные списки (OL) и элементы списков (LI)
    3. Списки определений: элементы DL, DT и DD
      1. Визуальное представление списков
    4. Элементы DIR и MENU
  11. Таблицы
    1. Введение в таблицы
    2. Элементы построения таблиц
      1. Элемент TABLE
        • Направление таблиц
      2. Captions таблиц: элемент CAPTION
      3. Грцппы строк: элементы THEAD, TFOOT и TBODY
      4. Группы столбцов: элементы COLGROUP и COL
        • Элемент COLGROUP
        • Элемент COL
        • Подсчет числа столбцов в таблице
        • Подсчет ширины столбцов
      5. Строки таблицы: элемент TR
      6. Ячейки таблицы: элементы TH и TD
        • Ячейки, span несколько строк или столбцов
    3. Форматирвоание таблиц визуальными агентами пользователей
      1. Границы и rules
      2. Горизонтальне и вертикальное выравнивание
        • Наследование параметров выравнивания
      3. Поля ячейки
    4. Представление таблиц невизуальными агентами пользователей
      1. Связь информации заголовка с ячейками данных
      2. Категоризация ячеек
      3. Алгоритм поиска заголовочной информации
    5. Пример таблицы
  12. Ссылки - Гипертекстовые и независящие от устройств ссылки
    1. Введение в ссылки и якоря
      1. Переход к ресурсу, на который указывает ссылка
      2. Другие отношения ссылок
      3. Задание якорей и ссылок
      4. Заголовки ссылок
      5. Интернационализация и ссылки
    2. Элемент A
      1. Синтаксис имен якорей
      2. Вложенные ссылки недопустимы
      3. Якоря с атрибутом id
      4. Недоступные и неопределяемые ресурсы
    3. Отношения документов: элемент LINK
      1. Прямые и обратные ссылки
      2. Ссылки и внешние таблицы стилей
      3. Ссылки и поисковые машины
    4. Информация о пути: элемент BASE
      1. Разрешение относительных URI
  13. Объекты, изображения и апплеты
    1. Введение в объекты, изображения и апплеты
    2. Включение изображения: элемент IMG
    3. Общее включение: элемент OBJECT
      1. Правила предсатвления объектов
      2. Инициализация объекта: элемент PARAM
      3. Глобальные схемы именования объектов
      4. Объявление и инициализация объекта
    4. Включение апплета: элемент APPLET
    5. Замечания о внедренных документах
    6. Навигационные карты
      1. Клиентские навиагционные карты: элементы MAP и AREA
        • Примеры клиентских навигационных карт
      2. Серверные навигационные карты
    7. Визуальное представление изображений, объектов и апплетов
      1. Ширина и высота
      2. Пространство вокруг изображений и объектов
      3. Границы
      4. Выравнивание
    8. Как указать альтернативный текст
  14. Таблицы стилей - Стиль в документах HTML
    1. Введение в таблицы стилей
    2. Как добавить стиль в HTML
      1. Установка языка таблицы стилей по умолчанию
      2. Встроенная инфомрация о стиле
      3. Информация о стиле в заголовке: элемент STYLE
      4. Типы устройств
    3. Внешние таблицы стилей
      1. Предпочитаемые и альтернативные таблицы стилей
      2. Указание внешних таблиц стилей
    4. Каскады таблиц стилей
      1. Каскады, не зависящие от устройств
      2. Наследование и каскады
    5. Как скрыть информацию о стиле от агентов пользователей
    6. Привязка таблиц стилей с помощью заголовков HTTP
  15. Выравнивание, стили шрифтов и горизонтальные разделители
    1. Форматирование
      1. Цвет фона
      2. Выравнивание
      3. Прикрепляемые объекты
        • Прикрепление объекта
        • Обтекание объекта текстом
    2. Шрифты
      1. Элементы, олпределяющие стиль шрифта: элементы TT, I, B, BIG, SMALL, STRIKE, S и U
      2. Элементы управления шрифтами: FONT и BASEFONT
    3. Разделители: элемент HR
  16. Фреймы - Представление документа в нескольких окнах
    1. Введение в фреймы
    2. Расположение фреймов
      1. Элемент FRAMESET
        • Строки и столбцы
        • вложенные наборы фреймов
        • Разделение данных между фреймами
      2. Элемент FRAME
        • Задание исходного содержимого фрейма
        • Визуальное представление фрейма
    3. Определение цели фрейма
      1. Устанока цели по умолчанию для ссылок
      2. Семантика целей
    4. Альтернативное содержимое
      1. Элемент NOFRAMES
      2. Длинные описания фреймов
    5. Встроенные фреймы: элемент IFRAME
  17. Формы - Заполняемые пользователем формы: текстовые поля, кнопки, меню и др.
    1. Введение в формы
    2. Управляющие элементы
      1. Типы управляющих элементов
    3. Элемент FORM
    4. Элемент INPUT
      1. Типы управляющих элементов, создаваемые с помощью элемента INPUT
      2. Примеры форм с управляющими элеменатми типа INPUT
    5. Элемент BUTTON
    6. Элементы SELECT, OPTGROUP и OPTION
      1. Заранее выбранные варианты
    7. Элемент TEXTAREA
    8. Элемент ISINDEX
    9. Метки
      1. Элемент LABEL
    10. Добавление в формы структуры: элементы FIELDSET и LEGEND
    11. Переход фокуса на элемент
      1. Переход с помощью клавиши Tab
      2. Клавиши доступа
    12. Отключенные управляющие элементы и элементы только для чтения
      1. Отключенные управляющие элементы
      2. Управляющие элементы только для чтения
    13. Отправка формы
      1. Метод отправки формы
      2. Успешные управляющие элементы
      3. Обработка данных формы
        • Первый шаг: определение успешных управляющих элементов
        • Второй шаг: построение набора данных формы
        • Третий шаг: кодирование набора даных формы
        • Четвертый шаг: передача закодированного набора данных формы
      4. Типы содержимого формы
        • application/x-www-form-urlencoded
        • multipart/form-data
  18. Скрипты - Анимированные документы и интеллектуальные формы
    1. Введение в скрипты
    2. Разработка документов для агентов пользователей, поддерживающих скрипты
      1. Элемент SCRIPT
      2. Указание языка скрипта
        • Язык скрипта по умолчанию
        • Локальное обяъвление языка скрипта
        • Ссылка из скрипта на документы HTML
      3. Внутренние события
      4. Динамическое изменение документов
    3. Разработка документов для агентов пользователей, не поддерживающих скрипты
      1. Элемент NOSCRIPT
      2. Как скрыть скрипт от агентов пользователей
  19. Справочная информация SGML для HTML - Формальное определение HTML и проверка корректности
    1. Проверка корректности документа
    2. Пример каталога SGML
  20. SGML-обявление HTML 4.0
    1. Объявление SGML
  21. Document Type Definition
  22. Transitional Document Type Definition
  23. Frameset Document Type Definition
  24. Character entity references in HTML 4.0
    1. Introduction to character entity references
    2. Character entity references for ISO 8859-1 characters
      1. The list of characters
    3. Character entity references for symbols, mathematical symbols, and Greek letters
      1. The list of characters
    4. Character entity references for markup-significant and internationalization characters
      1. The list of characters
  1. Различия между HTML 3.2 и HTML 4.0
    1. Различия в элементах
      1. Новые элементы
      2. Нежелательные элементы
      3. Устаревшие элементы
    2. Различия в атрибутах
    3. Различия в доступности
    4. Различия в метаданных
    5. Различия в тексте
    6. Различия в ссылках
    7. Различия в таблицах
    8. Различия в изображениях, объектах и навигационных картах
    9. Различия в формах
    10. Различия в таблицах стилей
    11. Различия в фреймах
    12. Различия в скриптах
    13. Различия в интернационализации
  2. Performance, Implementation, and Design Notes
    1. Notes on invalid documents
    2. Special characters in URI attribute values
      1. Non-ASCII characters in URI attribute values
      2. Ampersands in URI attribute values
    3. SGML implementation notes
      1. Line breaks
      2. Specifying non-HTML data
        • Element content
        • Attribute values
      3. SGML features with limited support
      4. Boolean attributes
      5. Marked Sections
      6. Processing Instructions
      7. Shorthand markup
    4. Notes on helping search engines index your Web site
      1. Search robots
        • The robots.txt file
        • Robots and the META element
    5. Notes on tables
      1. Design rationale
        • Dynamic reformatting
        • Incremental display
        • Structure and presentation
        • Row and column groups
        • Accessibility
      2. Recommended Layout Algorithms
        • Fixed Layout Algorithm
        • Autolayout Algorithm
    6. Notes on forms
      1. Incremental display
      2. Future projects
    7. Notes on scripting
      1. Reserved syntax for future script macros
        • Current Practice for Script Macros
    8. Notes on frames
    9. Notes on accessibility
    10. Notes on security
      1. Security issues for forms
  • References
    1. Normative references
    2. Informative references
  • Указатель элементов
  • Указатель атрибутов
  • Указатель

Copyright © 1997 W3C (MIT, INRIA, Keio ), все права защищены.


Информация о языке и направление текста

8 Информация о языке и направление текста

  1. Задание языка содержимого: атрибут lang
    1. Коды языков
    2. Наследование кодов языков
    3. Интерпретация кодов языков
  2. Указание направления текста и таблиц: атрибут dir
    1. Введение в двунаправленный алгоритм
    2. Наследование информации о направлении текста
    3. Установка направления внедренного текста
    4. Приоритет над двунаправленным алгоритмом: элемент BDO
    5. Ссылки на символы для управления направлением и объединением
    6. Таблицы стилей и двунаправленность

В этом разделе документа обсуждаются два важных вопроса интернационализации HTML: задание языка (атрибут lang) и направления (атрибут dir) текста в документе.

8.1 Задание языка содержимого: атрибут lang

Определения атрибутов
lang = код языка [CI]
Этот атрибут указывает основной язык значений атрибутов элементов и секстового содержимого. По умолчанию значение этого атрибута не установлено.

Информация о языке, указанная с помощью атрибута lang, может использоваться агентом пользователя для управления генерацией изображения различными способами. Некоторые ситуации, в которых указываемая автором информация а языке, может быть полезна:

  • Помощь поисковым машинам
  • Помощь синтезаторам речи
  • Помощь агентам пользователей в выборе вариантов глифов для высококачественной типографии
  • Помощь агенту пользователя в выборе набора кавычек
  • Помощь агенту пользователя в вопросах переноса, лигатур и интервалов
  • Помощь программа проверки грамматики и орфографии

Атрибут lang указывает код содержимого элемента и значений атрибутов; относится ли он к данному атрибуту, зависит от синтаксиса и семантики атрибута и от операции.

Атрибут lang предназначен для того, чтобы позволить агентам пользователей более осмысленно генерировать изображение на основе принятой культурной практики для данного языка. Это не подразумевает, что агенты пользователей должны генерировать символы, не являющиеся типичными для конкретного языка, менее осмысленным способом; агенты пользователей должны пытаться сгенерировать се символы, независимо от значения, указанного в атрибуте lang.

Например, если в русском тексте должен появиться символ греческого алфавита:

<P><Q lang="ru">"Эта супермощность была результатом &gamma;-радиации,</Q> объяснил он.</P>

агент пользователя (1) должен попытаться сгенерировать русский текст соответствующим образом (например, в соответствующих кавычках) и (2) попытаться сгенерировать символ γ, даже если это не русский символ.

Дополнительную информацию см. в разделе о неотображаемых символах.

8.1.1 Коды языков

Значением атрибута lang является код языка, идентифицирующий естественный разговорный язык, который устно, письменно или иным образом используется для передачи информации между людьми. Компьютерные языки явным образом исключены из кодов языков.

В документе [RFC1766] определены и описаны все коды языков, которые должны использоваться в документах на языке HTML.

Кратко говоря, коды языков состоят из первичного кода и ряда подкодов, который может быть пустым:

        код-языка = первичный-код ( "-" подкод )*

Вот несколько примеров кодов языков:

  • "en": английский
  • "en-US": американская версия английского.
  • "en-cockney": кокни (диалект английского).
  • "i-navajo": навахо (язык американских индейцев).
  • "x-klingon": Первичный код "x" обозначает экспериментальный код языка

Двухбуквенные первичные коды зарезервированы для сокращений языков по стандарту [ISO639]. Сюда входят коды fr (французский), de (немецкий), it (итальянский), nl (голландский), el (греческий), es (испанский), pt (португальский), ar (арабский), he (иврит), ru (русский), zh (китайский), ja (японский), hi (хинди), ur (урду) и sa (санскрит).

Любой двухбуквенный подкод считается кодом страны в стандарте [ISO3166].

8.1.2 Наследование кодов языков

Элемент наследует информацию о коде языка в следующем порядке старшинства (от высшего к низшему):

  • Атрибут lang, установленный для самого элемента.
  • Самый близкий родительский элемент, для которого установлено значение атрибута lang (то есть атрибут lang наследуется).
  • Заголовок HTTP "Content-Language" (который может конфигурироваться на сервере). Например:
    Content-Language: en-cockney
  • Значения по умолчанию и настройки агента пользователя.

В этом примере первичным языком документа является французский ("fr"). Один абзац объявлен на испанском языке ("es"), после чего язык снова становится французским. В следующий абзац включена японская фраза ("ja"), после чего язык опять изменяется на французский.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
   "http://www.w3.org/TR/REC-html40/strict.dtd">
<HTML lang="fr">
<HEAD>
<TITLE>Un document multilingue</TITLE>
</HEAD>
<BODY>
...текст интерпретируется как французский...
<P lang="es">... текст интерпретируется как испанский...
<P>... текст опять интерпретируется как французский...
<P>...французский текст, в котором попадается <EM lang="ja">фрагмент на японском</EM>, а здесь опять начинается французский...
</BODY>
</HTML>
Примечание. Ячейки таблицы могут наследовать значения атрибута lang не от родителя, а из первой ячейки объединения. Подробнее см. в разделе наследование выравнивания.

8.1.3 Интерпретация кодов языков

В контексте HTML код языка должен интерпретироваться агентами пользователя как иерархия знаков, а не один знак. Если агент пользователя генерирует изображение в соответствии с информацией о языке (скажем, сравнивая языковые коды в таблицах стилей и значения атрибута lang), он всегда должен находить точное соответствие, но должен также принимать во внимание первичные коды. Таким образом, если значение атрибута lang "en-US" установлено для элемента HTML, агент пользователя должен сначала выбрать информацию о стиле, совпадающую с "en-US", а затем сгенерировать более общее значение "en".

Примечание. Иерархия кодов языков не гарантирует понимания всех языков с общими префиксами людьми, бегло говорящими на одном или нескольких из этих языков. Она помогает пользователю запросить эту общность, когда для пользователя она является истинной.

8.2 Указание направления текста и таблиц: атрибут dir

Определения атрибутов

dir = LTR | RTL [CI]
Этот атрибут задает основное направление нейтрального в смысле направления текста (например, текста, который не наследует направленность, как определено в [UNICODE]) и направление таблиц. Возможные значения:
  • LTR: Слева направо.
  • RTL: Справа налево.

Кроме задания языка документа с помощью атрибута lang, авторы могут указать основное направление (слева направо или справа налево) частей текста, таблицы и т.д. Это делается с помощью атрибута dir.

Спецификация [UNICODE] назначает направление символам и определяет (сложный) алгоритм для определения соответствующего направления текста. Если документ не содержит отображаемых справа налево символов, агент пользователя не должен использовать двунаправленный алгоритм [UNICODE]. Если документ содержит такие символы, и если агент пользователя и отображает, он должен использовать двунаправленный алгоритм.

Хотя в Unicode определены специальные символы, отвечающие за направление текста, HTML предлагает конструкции разметки высшего уровня, выполняющие те же функции: атрибут dir (не спутайте с элементом DIR) и элемент BDO. Таким образом, чтобы привести цитату на иврите, проще написать

<Q lang="he" dir="rtl">...цитата на иврите...</Q>

чем с эквивалентными ссылками Unicode:

&#x202B;&#x05F4;...цитата на иврите...&#x05F4;&#x202C;

Агенты пользователей не должны использовать атрибут lang для определения направления текста.

Атрибут dir наследуется, и его можно переопределить. Подробнее см. в разделе о наследовании информации о направлении текста.

8.2.1 Введение в двунаправленный алгоритм

В следующем примере проиллюстрировано ожидаемое поведение двунаправленного алгоритма. В нем показаны английский текст слева направо и текст на иврите справа налево.

Рассмотрите следующий текст:

  английский1 ИВРИТ2 английский3 ИВРИТ4 английский5 ИВРИТ6

Символы в этом примере (и во всех реплицированных примерах) хранятся в компьютере в том же виде, в каком они отображаются здесь: первый символ - "а", второй - "н", последний "6".

Предположим, для содержащего этот абзац документа определен английский язык. Это означает, что основным направлением является направление слева направо. Корректное представление этой строки:

английский1 2ТИРВИ английский3 4ТИРВИ английский5 6ТИРВИ
            <-----             <-----             <-----
               H                H                H
---------------------------------------------------->
                         E

Строки точек указывают структуру предложения: основным языком является английский, но встроены некоторые элементы на иврите. Для получения корректного представления не нужно никакой дополнительной разметки, поскольку фрагменты на иврите корректно обращаются агентами пользователя, применяющими двунаправленный алгоритм.

С другой стороны, если для документа определен язык иврит, основным будет направление справа налево. Корректное представление, таким образом, будет:

6ТИРВИ английский5 4ТИРВИ английский3 2ТИРВИ английский1
        ------->           ------->           ------->
            E                E                E
<-------------------------------------------------
                       H

В это случае все предложение представляется справа налево, а фрагменты на английском языке обращаются двунаправленным алгоритмом.

8.2.2 Наследование информации о направлении текста

Для двунаправленного алгоритма Unicode необходимо основное направление текста для текстовых блоков. Чтобы указать основное направление элементов уровня блока, установите для этого элемента атрибута dir. Значением атрибута dir, устанавливаемым по умолчанию, является "ltr" (слева направо).

Если атрибут dir установлен для элемента уровня блока, он действует на протяжении всего элемента и для всех вложенных элементов уровня блока. Установка атрибута dir для вложенного элемента имеет приоритет по отношению к наследуемому значению.

Чтобы установить основное направление текста для всего документа, установите атрибут dir в элементе HTML.

Например:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
   "http://www.w3.org/TR/REC-html40/strict.dtd">
<HTML dir="RTL">
<HEAD>
<TITLE>...заголовок справа налево...</TITLE>
</HEAD>
...текст справа налево...
<P dir="ltr">...текст слева направо...</P>
<P>...опять текст справа налево...</P>
</HTML>

Встроенные элементы, с другой стороны, не наследуют атрибут dir. Это означает, что встроенный элемент без атрибута dir не открывает дополнительного уровня внедрения в соответствии с двунаправленным алгоритмом. (Здесь элементом считается элемент уровня блока или встроенный элемент на основе представления по умолчанию. Помните, что элементы INS и DEL могут быть элементами уровня блока или встраиваемыми элементами в зависимости от контекста.)

8.2.3 Установка направления внедренного текста

Двунаправленный алгоритм [UNICODE] автоматически обращает последовательности внедренных символов в соответствии с наследуемым направлением (как показано в предыдущих примерах). Однако в общем в расчет принимается только один уровень внедрения. Для того, чтобы изменения направления достигали дополнительных уровней, используйте атрибут dir во встроенном элементе.

Рассмотрите текст предыдущего примера:

английский1 ИВРИТ2 английский3 ИВРИТ4 английский5 ИВРИТ6

Предположим, основным языком для документа, содержащего этот абзац, является английский. В этом английском предложении содержится фрагмент на иврите, продолжающийся от ИВРИТ2 до ИВРИТ4, и в нем содержится англоязычный фрагмент (английский3). Таким образом, желаемое представление текста:

английский1 4ТИРВИ английский3 2ТИРВИ английский5 6ТИРВИ
                    ------->
                       А
            <-----------------------
                       И
---------------------------------------------------->
                       А

Для изменения направления текста двух внедренных фрагментов необходимо задать дополнительную информацию, что мы и делаем, явно разделяя второе внедрение. В этом примере мы используем для разметки текста элемент SPAN и атрибут dir:

английский1 <SPAN dir="RTL">ИВРИТ2 английский3 ИВРИТ4</SPAN> английский5 ИВРИТ6

Авторы также могут использовать для изменения направления нескольких внедренных фрагментов символы Unicode. Для указания направления слева направо во внедряемом фрагменте окружите текст символами LEFT-TO-RIGHT EMBEDDING ("LRE", шестнадцатеричный код 202A) и POP DIRECTIONAL FORMATTING ("PDF", шестнадцатеричный код 202C). Для указания направления справа налево во внедряемом фрагменте окружите текст символами RIGHT-TO-LEFT EMBEDDING ("RTE", шестнадцатеричный код 202B) и PDF.

Использование разметки направленности HTML с символами Unicode. Авторы и разработчики средств создания HTML-документов должны знать о возможных конфликтах, возникающих при использовании атрибута dir со встроенными элементами (включая BDO) одновременно с соответствующими символами форматирования [UNICODE]. Предпочтительнее использовать только один метод. Метод с использованием разметки гарантирует структурную целостность документа и устраняет некоторые проблемы с редактированием двунаправленного текста HTML в простых текстовых редакторах, но некоторое программное обеспечение может лучше использовать символы [UNICODE]. Если используются оба метода, следует хорошо позаботиться о правильном вложении разметки и символов, иначе результаты могут быть непредсказуемыми.

8.2.4 Приоритет над двунаправленным алгоритмом: элемент BDO

<!ELEMENT BDO - - (%inline;)*          -- приоритет над I18N BiDi -->
<!ATTLIST BDO
  %coreattrs;                          -- id, class, style, title --
  lang        %LanguageCode; #IMPLIED  -- код языка --
  dir         (ltr|rtl)      #REQUIRED -- направление --
  >

Начальный тег: обязателен, Конечный тег: обязателен

Определения атрибутов

dir = LTR | RTL [CI]
Этот обязательный атрибут указывает основное направление текстового содержимого элемента. Это направление имеет приоритет по отношению к наследуемому направлению символов, как определено в [UNICODE]. Возможные значения:
  • LTR: Направление слева направо.
  • RTL: Направление справа налево.

Атрибуты, определяемые в любом другом месте

  • lang (информация о языке)

Двунаправленного алгоритма и атрибута dir обычно достаточно для управления изменением направления внедренного текста. Однако в некоторых ситуациях двунаправленный алгоритм может привести к некорректному представлению. Элемент BDO позволяет авторам отключать двунаправленный алгоритм для выбранных фрагментов текста.

Рассмотрите документ с тем же текстовым фрагментом:

английский1 ИВРИТ2 английский3 ИВРИТ4 английский5 ИВРИТ6

но предположите, что этот текст уже представлен в нужном порядке. Одной причиной этого может быть то, что стандарт MIME ([RFC2045], [RFC1556]) благоприятствует визуальному порядку, то есть последовательности с направлением справа налево вставляются в байтовый поток с направлением справа налево. В электронной почте это может форматироваться, включая перевод строки, например:

английский1 2ТИРВИ английский3
4ТИРВИ английский5 6ТИРВИ

Это конфликтует с двунаправленным алгоритмом [UNICODE], поскольку этот алгоритм инвертирует 2ТИРВИ, 4ТИРВИи 6ТИРВИ во второй раз, так что слова на иврите отображаются слева направо, а не справа налево.

В этом случае решением будет переопределить действие двунаправленного алгоритма, поместив выдержку Email в элемент PRE (для сохранения переводов строки) и каждую строку, для которой атрибут dir установлен в LTR, в элемент BDO:

<PRE>
<BDO dir="LTR">английский1 2ТИРВИ английский3</BDO>
<BDO dir="LTR">4ТИРВИ английский5 6ТИРВИ</BDO>
</PRE>

Двунаправленному алгоритму выдается команда "Я должен быть слева направо!", что приведет к нужному представлению:

английский1 2ТИРВИ английский3
4ТИРВИ английский5 6ТИРВИ

Элемент BDO следует использовать в сценариях, где необходим абсолютный контроль над последовательностью (например, многоязыковые номера частей). Атрибут dir для этого элемента является обязательным.

Авторы могут также использовать специальные символы Unicode для того, чтобы избежать использования двунаправленного алгоритма -- LEFT-TO-RIGHT OVERRIDE (202D) или RIGHT-TO-LEFT OVERRIDE (шестнадцатеричный код 202E). Символ POP DIRECTIONAL FORMATTING (шестнадцатеричный код 202C) заканчивает любую последовательность, используемую для обхода двунаправленного алгоритма.

Примечание. Помните, что при использовании атрибута dir во встроенных элементах (включая BDO) одновременно с соответствующими символами форматирования [UNICODE], могут возникать конфликты.

Двунаправленность и кодировка символов В соответствии с [RFC1555] и [RFC1556] существуют специальные соглашения относительно использования значений параметра "charset" для указания обработки двунаправленности в почте MIME, в частности для отличия визуальной, явной и неявной направленности. Значение параметра "ISO-8859-8" (для иврита) обозначает визуальную кодировку, "ISO-8859-8-i" обозначает неявную двунаправленность, а "ISO-8859-8-e" обозначает явную направленность.

Поскольку HTML использует двунаправленный алгоритм Unicode, соответствующие документы, использующие кодировку ISO 8859-8, должны помечаться как "ISO-8859-8-i". Явное управление направлением в HTML также возможно, но его нельзя выразить в ISO 8859-8, поскольку не следует использовать "ISO-8859-8-e".

Значение "ISO-8859-8" подразумевает, что документ отформатирован визуально, и некоторая разметка будет использоваться неправильно (например, TABLE с выравниванием по правому краю без разбивки строк), чтобы гарантировать правильное отображение для более старых агентов пользователя, не поддерживающих двунаправленность. Такие документы не удовлетворяют настоящей спецификации. При необходимости их можно изменить (и одновременно они будут корректно отображаться в старых версиях агентов пользователей), добавив, где нужно, разметку BDO. Вопреки сказанному в [RFC1555] и [RFC1556], кодировка ISO-8859-6 (арабская) не представляет визуального порядка.

8.2.5 Ссылки на символы для управления направлением и объединением

Поскольку иногда возникает двусмысленность относительно некоторых символов (например, символов пунктуации), спецификация [UNICODE] включает символы для правильного определения назначения. Спецификация Unicode также включает некоторые символы для управления объединением при необходимости (например, в некоторых ситуациях с арабскими символами). HTML 4.0 включает для этих символов ссылки на символы.

Следующее DTD определяет представление некоторых объектов направления:

   <!ENTITY zwnj CDATA "&#8204;"--=нулевая ширина без объединения -->
   <!ENTITY zwj  CDATA "&#8205;"--=объединитель нулевой ширины-->
   <!ENTITY lrm  CDATA "&#8206;"--=метка слева направо-->
   <!ENTITY rlm  CDATA "&#8207;"--=метка справа налево-->

Объект zwnj используется для блокировки объединения в тех контекстах, где объединение произойдет, но оно происходить не должно. Объект zwj имеет обратное действие; он производит объединение в случае, когда оно не предполагается, но должно произойти. Например, арабская буква "HEH" используется для сокращения "Hijri", названия исламской системы летоисчисления. Поскольку отдельный иероглиф "HEH" в арабской письменности выглядит как цифра пять, для того, чтобы не путать букву "HEH" с последней цифрой пять в годе, используется исходная форма буквы "HEH". Однако, нет последующего контекста (например, буквы для объединения), с которым можно объединить "HEH". Символ zwj предоставляет такой контекст.

Точно так же в персидских текстах буква может иногда объединяться с последующей буквой, в то время как в рукописном тексте этого быть не должно. Символ zwnj используется для блокировки объединения в таких случаях.

Символы порядка, lrm и rlm, используются для определения направления нейтральных по отношению к направлению символов. Например, если двойные кавычки ставятся между арабской (справа налево) и латинской (слева направо) буквами, направление кавычек неясно (относятся ли они к арабскому или к латинскому тексту?). Символы lrm и rlm имеют свойство направления, но не имеют свойств ширины и разделения слов/строк. Подробнее см. [UNICODE].

Отражение глифов символов. Вообще двунаправленный алгоритм не отражает глифы символов и не влияет на них. Исключением являются такие символы как скобки (см. [UNICODE], таблица 4-7). Если отражение желательно, например, для египетских иероглифов, греческих знаков или специальных эффектов дизайна, можно сделать это с помощью стилей.

8.2.6 Таблицы стилей и двунаправленность

Вообще использование таблиц стилей для изменения визуального представления элемента с уровня блока до встроенного и наоборот используется в прямом направлении. Однако, поскольку двунаправленный алгоритм использует различия встроенных элементов/элементов уровня блока, во время преобразования нужно быть внимательным.

Если встроенный элемент, не имеющий атрибута dir, преобразуется в стиль элемента уровня блока с помощью таблицы стилей, для определения основного направления блока он наследует атрибут dir от ближайшего родительского элемента блока.

Если элемент блока, не имеющий атрибута a dir, преобразуется к стилю встроенного элемента с помощью таблицы стилей, результирующее представление должно быть эквивалентным, в терминах двунаправленного форматирования, форматированию, получаемому путем явного добавления атрибута dir (которому назначено унаследованное значение) преобразованному элементу.


HTML 4.0 Document Type Definition

21 Определение типа документа (Document Type Definition)

<!--
    В данном HTML 4.0 Strict DTD исключаются атрибуты
    и элементы представления, использование которых для
    определения стиля W3C планирует постепенно прекратить.
    Авторам следует при возможности использовать Strict DTD,
    но в случае необходимости поддержки атрибутов и элементов
    представления допускается использование Transitional DTD.

    В HTML 4.0 включены механизмы поддержки таблиц стилей,
    скриптов, внедрения объектов, улучшена поддержка направления
    текста справа налево и смешанного текста, а также внесены
    изменения в формы с целью обеспечения удобства работы
    пользователей с физическими недостатками.

          Черновик: $Дата: 1997/12/18 09:36:02 $

          Авторы:
              Дэйв Рэгетт <dsr@w3.org>
              Арно Ле Орс <lehors@w3.org>
              Ян Джейкобс <ij@w3.org>

    Подробную информацию о HTML 4.0 можно найти по адресу:

        http://www.w3.org/TR/REC-html40
-->
<!--
    Пример типичного использования:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
            "http://www.w3.org/TR/REC-html40/strict.dtd">
    <html>
    <head>
    ...
    </head>
    <body>
    ...
    </body>
    </html>

    URI, используемый как идентификатор системы, позволяет
    агенту пользователя загрузить необходимые DTD и наборы
    комбинаций.

    FPI для Transitional HTML 4.0 DTD:

        "-//W3C//DTD HTML 4.0 Transitional//EN

    его URI:

        http://www.w3.org/TR/REC-html40/loose.dtd

    Создавая документ с фреймами, используйте
    следующий FPI:

        "-//W3C//DTD HTML 4.0 Frameset//EN"

    и URI:

        http://www.w3.org/TR/REC-html40/frameset.dtd

    По отношению к HTML 4.0 поддерживаются следующие URI

    "http://www.w3.org/TR/REC-html40/strict.dtd" (Strict DTD)
    "http://www.w3.org/TR/REC-html40/loose.dtd" (Loose DTD)
    "http://www.w3.org/TR/REC-html40/frameset.dtd" (Frameset DTD)
    "http://www.w3.org/TR/REC-html40/HTMLlat1.ent" (комбинации набора Latin-1)
    "http://www.w3.org/TR/REC-html40/HTMLsymbol.ent" (комбинации набора Symbol)
    "http://www.w3.org/TR/REC-html40/HTMLspecial.ent" (специальные комбинации)

    Эти URI указывают на последнюю версию каждого файла.
    Для ссылки на специальную версию используйте следующие URI:

    "http://www.w3.org/TR/REC-html40-971218/strict.dtd"
    "http://www.w3.org/TR/REC-html40-971218/loose.dtd"
    "http://www.w3.org/TR/REC-html40-971218/frameset.dtd"
    "http://www.w3.org/TR/REC-html40-971218/HTMLlat1.ent"
    "http://www.w3.org/TR/REC-html40-971218/HTMLsymbol.ent"
    "http://www.w3.org/TR/REC-html40-971218/HTMLspecial.ent"

-->

<!--================== Импортированные имена ====================================-->

<!ENTITY % ContentType "CDATA"
    -- тип устройства в соответствии с [RFC2045]
    -->

<!ENTITY % ContentTypes "CDATA"
    -- разделенный запятыми список типов устройств в соответствии с [RFC2045]
    -->

<!ENTITY % Charset "CDATA"
    -- кодировка символов в соответствии с [RFC2045]
    -->

<!ENTITY % Charsets "CDATA"
    -- разделенный пробелами список кодировок символов в соответствии с [RFC2045]
    -->

<!ENTITY % LanguageCode "NAME"
    -- код языка в соответствии с [RFC1766]
    -->

<!ENTITY % Character "CDATA"
    -- отдельный символ [ISO10646]
    -->

<!ENTITY % LinkTypes "CDATA"
    -- разделенный пробелами список типов ссылок
    -->

<!ENTITY % MediaDesc "CDATA"
    -- отдельный дескриптор устройства или разделенный запятыми список
    -->

<!ENTITY % URI "CDATA"
    -- универсальный идентификатор ресурса,
       см. [URI]
    -->

<!ENTITY % Datetime "CDATA" - информация о дате и времени. Формат даты ISO -->

<!ENTITY % Script "CDATA" - выражение скрипта -->

<!ENTITY % StyleSheet "CDATA" - данные таблицы стилей -->

<!ENTITY % Text "CDATA">

<!-- Комбинации параметров -->

<!ENTITY % head.misc "SCRIPT|STYLE|META|LINK|OBJECT" - повторяющиеся элементы заголовка -->

<!ENTITY % heading "H1|H2|H3|H4|H5|H6">

<!ENTITY % list "UL | OL">

<!ENTITY % preformatted "PRE">

<!--================ Комбинации мнемоник символов =========================-->

<!ENTITY % HTMLlat1 PUBLIC
   "-//W3C//ENTITIES Latin1//EN//HTML"
   "http://www.w3.org/TR/REC-html40-971218/HTMLlat1.ent">
%HTMLlat1;

<!ENTITY % HTMLsymbol PUBLIC
   "-//W3C//ENTITIES Symbols//EN//HTML"
   "http://www.w3.org/TR/REC-html40-971218/HTMLsymbol.ent">
%HTMLsymbol;

<!ENTITY % HTMLspecial PUBLIC
   "-//W3C//ENTITIES Special//EN//HTML"
   "http://www.w3.org/TR/REC-html40-971218/HTMLspecial.ent">
%HTMLspecial;
<!--=================== Общие атрибуты ===============================-->

<!ENTITY % coreattrs
 "id          ID             #IMPLIED  -- уникальный идентификатор в пределах документа --
  class       CDATA          #IMPLIED  -- разделенный проблеами список классов --
  style       %StyleSheet;   #IMPLIED  -- связанная информация о стиле --
  title       %Text;         #IMPLIED  -- рекомендуемый заголовок/усиление --"
  >

<!ENTITY % i18n
 "lang        %LanguageCode; #IMPLIED  -- код языка --
  dir         (ltr|rtl)      #IMPLIED  -- направление слабого/нейтрального текста --"
  >

<!ENTITY % events
 "onclick     %Script;       #IMPLIED  -- щелчок кнопки указующего устройства --
  ondblclick  %Script;       #IMPLIED  -- двойной щелчок кнопки указующего устройства --
  onmousedown %Script;       #IMPLIED  -- нажата кнопка указующего устройства --
  onmouseup   %Script;       #IMPLIED  -- отпущена кнопка указующего устройства --
  onmouseover %Script;       #IMPLIED  -- указатель перемещен на --
  onmousemove %Script;       #IMPLIED  -- указатель перемещен в пределы --
  onmouseout  %Script;       #IMPLIED  -- указатель перемещен за пределы --
  onkeypress  %Script;       #IMPLIED  -- клавиша нажата и отпущена --
  onkeydown   %Script;       #IMPLIED  -- клавиша нажата --
  onkeyup     %Script;       #IMPLIED  -- клавиша отпущена --"
  >

<!-- Переключатель зарезервированных возможностей -->
<!ENTITY % HTML.Reserved "IGNORE">

<!-- Следующие атрибуты зарезервированы, и, возможно, будут использоваться в будущем -->
<![ %HTML.Reserved; [
<!ENTITY % reserved
 "datasrc     %URI;          #IMPLIED  -- один или несколько источников данных --
  datafld     CDATA          #IMPLIED  -- имя свойства или столбца --
  dataformatas (plaintext|html) plaintext - текст или html --"
  >
]]>

<!ENTITY % reserved "">

<!ENTITY % attrs "%coreattrs; %i18n; %events;">

<!--=================== Разметка текста ======================================-->

<!ENTITY % fontstyle
 "TT | I | B | BIG | SMALL">

<!ENTITY % phrase "EM | STRONG | DFN | CODE |
                   SAMP | KBD | VAR | CITE | ABBR | ACRONYM" >

<!ENTITY % special
   "A | IMG | OBJECT | BR | SCRIPT | MAP | Q | SUB | SUP | SPAN | BDO">

<!ENTITY % formctrl "INPUT | SELECT | TEXTAREA | LABEL | BUTTON">

<!-- %inline; встроенные элементы или элементы "уровня текста" -->
<!ENTITY % inline "#PCDATA | %fontstyle; | %phrase; | %special; | %formctrl;">

<!ELEMENT (%fontstyle;|%phrase;) - - (%inline;)*>
<!ATTLIST (%fontstyle;|%phrase;)
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!ELEMENT (SUB|SUP) - - (%inline;)*    -- верхний и нижний индекс -->
<!ATTLIST (SUB|SUP)
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!ELEMENT SPAN - - (%inline;)*         -- общий контейнер языка/стиля -->
<!ATTLIST SPAN
  %attrs;                              -- %coreattrs, %i18n, %events --
  %reserved;			       -- зарезервировано для использования в будущем --
  >

<!ELEMENT BDO - - (%inline;)*          -- переопределение BiDi интернционализации -->
<!ATTLIST BDO
  %coreattrs;                          -- id, class, style, title --
  lang        %LanguageCode; #IMPLIED  -- код языка --
  dir         (ltr|rtl)      #REQUIRED -- направление --
  >

<!ELEMENT BR - O EMPTY                 -- принудительный переход на следующую строку  -->
<!ATTLIST BR
  %coreattrs;                          -- id, class, style, title --
  >

<!--================== Модели содержимого HTML ===============================-->

<!--
    В HTML имеется две модели содержмого:

        %inline;     элементы уровня символа и текстовые строки
        %block;      элементы типа блока, например абзацы и списки
-->

<!ENTITY % block
     "P | %heading; | %list; | %preformatted; | DL | DIV | NOSCRIPT |
      BLOCKQUOTE | FORM | HR | TABLE | FIELDSET | ADDRESS">

<!ENTITY % flow "%block; | %inline;">

<!--=================== Тело документа ====================================-->

<!ELEMENT BODY O O (%block;|SCRIPT)+ +(INS|DEL) - тело документа -->
<!ATTLIST BODY
  %attrs;                              -- %coreattrs, %i18n, %events --
  onload          %Script;   #IMPLIED  -- доумент загружен --
  onunload        %Script;   #IMPLIED  -- документ удален --
  >

<!ELEMENT ADDRESS - - (%inline;)* -- информация об авторе -->
<!ATTLIST ADDRESS
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!ELEMENT DIV - - (%flow;)*            -- общий контейнер языка/стиля -->
<!ATTLIST DIV
  %attrs;                              -- %coreattrs, %i18n, %events --
  %reserved;                           -- зарезервировано для использования в будущем --
  >

<!--================== элемент якоря ================================-->

<!ENTITY % Shape "(rect|circle|poly|default)">
<!ENTITY % Coords "CDATA" - разделенный запятыми список длин -->

<!ELEMENT A - - (%inline;)* -(A)       -- якорь -->
<!ATTLIST A
  %attrs;                              -- %coreattrs, %i18n, %events --
  charset     %Charset;      #IMPLIED  -- кодировка симвлов связанного ресурса --
  type        %ContentType;  #IMPLIED  -- рекомендуемый тип содержимого --
  name        CDATA          #IMPLIED  -- конец именованной ссылки --
  href        %URI;          #IMPLIED  -- URI связанного ресурса --
  hreflang    %LanguageCode; #IMPLIED  -- код языка --
  rel         %LinkTypes;    #IMPLIED  -- типы прямых ссылок --
  rev         %LinkTypes;    #IMPLIED  -- типы обратных ссылок --
  accesskey   %Character;    #IMPLIED  -- клавиша доступа --
  shape       %Shape;        rect      -- для использвоания с клиентскими
                                          навигационными картами --
  coords      %Coords;       #IMPLIED  -- для использования с серверными
                                          навигационными картами --
  tabindex    NUMBER         #IMPLIED  -- положение в последовательности перехода --
  onfocus     %Script;       #IMPLIED  -- фокус перешел к элементу --
  onblur      %Script;       #IMPLIED  -- фокус ушел с элемента --
  >

<!--================== Клиентские навигационные карты ============================-->

<!-- Их можно помещать в тот же документ или группировать в
     отдельный документ, хотя поддерживаются они пока еще не везде -->

<!ELEMENT MAP - - ((%block;)+ | AREA+) - клиентсая навигационная карта -->
<!ATTLIST MAP
  %attrs;                              -- %coreattrs, %i18n, %events --
  name        CDATA          #REQUIRED - только в usemap --
  >

<!ELEMENT AREA - O EMPTY               -- область клиентской навигационной карты -->
<!ATTLIST AREA
  %attrs;                              -- %coreattrs, %i18n, %events --
  shape       %Shape;        rect      -- управляет представлением координат --
  coords      %Coords;       #IMPLIED  -- разделенный запятыми список длин --
  href        %URI;          #IMPLIED  -- URI связанного ресурса --
  nohref      (nohref)       #IMPLIED  -- с этой областью действие не связано --
  alt         %Text;         #REQUIRED -- краткое описание --
  tabindex    NUMBER         #IMPLIED  -- положение в последовательности перехода --
  accesskey   %Character;    #IMPLIED  -- улавиша доступа --
  onfocus     %Script;       #IMPLIED  -- фокус перешел к элементу --
  onblur      %Script;       #IMPLIED  -- фокус ушел с элемента --
  >

<!--================== Элемент ссылки ==================================-->

<!--
  Значения отношения могут использоваться в основном:

   а) для панелей инструментов/меню в документе при использовании
      с элементом LINK в заголовке документа, например,
      начало, содержание, назад, далее, указатель, конец, справка
   б) для ссылки на отдельную таблицу стилей (rel=stylesheet)
   в) для установки ссылки на скрипт (rel=script)
   г) в таблицах стилей для управления представлением набора узлов
      html в печатных версиях документов
   д) для ссылки на печатную версию данного документа, например,
      на версию в формате postscript или pdf (rel=alternate media=print)
-->

<!ELEMENT LINK - O EMPTY               -- независимая от устройства ссылка -->
<!ATTLIST LINK
  %attrs;                              -- %coreattrs, %i18n, %events --
  charset     %Charset;      #IMPLIED  -- кодировка связанного ресурса --
  href        %URI;          #IMPLIED  -- URI связанного ресурса --
  hreflang    %LanguageCode; #IMPLIED  -- код языка --
  type        %ContentType;  #IMPLIED  -- рекомендумый тип содержимого --
  rel         %LinkTypes;    #IMPLIED  -- типы прямых ссылок --
  rev         %LinkTypes;    #IMPLIED  -- типы обратных ссылок --
  media       %MediaDesc;    #IMPLIED  -- для представления на этих устройствах --
  >

<!--=================== Изображения ===========================================-->

<!-- Длина, определенная в DTD для cellpadding/cellspacing -->
<!ENTITY % Length "CDATA" -- nn в пикселах или nn% в процентах -->
<!ENTITY % MultiLength "CDATA" - пикселы, проценты или относительная -->

<!ENTITY % MultiLengths "CDATA" - разделенный запятыми список MultiLength -->

<!ENTITY % Pixels "CDATA" - целое представление длины в пикселах -->

<!-- Во избежание проблем с только текстовыми агентами пользователей,
     а также для того, чтобы сделать изображения доступными и полезными
     для пользователей с невизуальными агентами пользователей, необходимо
     определять описания в атрибуте ALT и не использовать серверные изображения-карты -->
<!ELEMENT IMG - O EMPTY                -- внедренное изображение -->
<!ATTLIST IMG
  %attrs;                              -- %coreattrs, %i18n, %events --
  src         %URI;          #REQUIRED -- URI внедряемого изображения --
  alt         %Text;         #REQUIRED -- краткое описание --
  longdesc    %URI;          #IMPLIED  -- ссылка на длинное описание (дополняет alt) --
  height      %Length;       #IMPLIED  -- переопределение высоты --
  width       %Length;       #IMPLIED  -- переопределение ширины --
  usemap      %URI;          #IMPLIED  -- использовать клиентскую навигационную карту --
  ismap       (ismap)        #IMPLIED  -- использовать серверную навигационную карту --
  >

<!-- USEMAP указывает на элемент MAP, который может находиться в этом или
     внешнем документе, хотя последний вариант поддерживается не всегда -->

<!--==================== OBJECT ======================================-->
<!--
  OBJECT используется для внедрения объектов в качестве части страниц HTML,
  другому содержимому должны предшествовать элементы PARAM. Модель смешанного
  содержимого SGML технически мешает такому формальному заданию...
-->

<!ELEMENT OBJECT - - (PARAM | %flow;)*
 -- общий внедренный объект -->
<!ATTLIST OBJECT
  %attrs;                              -- %coreattrs, %i18n, %events --
  declare     (declare)      #IMPLIED  -- объявить, но не инициировать флаг --
  classid     %URI;          #IMPLIED  -- определение реализации --
  codebase    %URI;          #IMPLIED  -- базовый URI для classid, data, archive--
  data        %URI;          #IMPLIED  -- ссылка на данные объекта --
  type        %ContentType;  #IMPLIED  -- тип содержимого данных --
  codetype    %ContentType;  #IMPLIED  -- тип содержимого для кода --
  archive     %URI;          #IMPLIED  -- разделенный проблеами список архивов --
  standby     %Text;         #IMPLIED  -- сообщение, отображаемое при загрузке --
  height      %Length;       #IMPLIED  -- переопределение высоты  --
  width       %Length;       #IMPLIED  -- переопределение ширины --
  usemap      %URI;          #IMPLIED  -- использовать клиентскую навигационную карту --
  name        CDATA          #IMPLIED  -- передать как часть формы --
  tabindex    NUMBER         #IMPLIED  -- положение в последовательности перехода --
  %reserved;                           -- зарезервировано для использования в будущем --
  >

<!ELEMENT PARAM - O EMPTY              -- значение именованного свойства -->
<!ATTLIST PARAM
  id          ID             #IMPLIED  -- уникальный идентификатор в пределах документа --
  name        CDATA          #REQUIRED -- имя свойства --
  value       CDATA          #IMPLIED  -- значение свойства --
  valuetype   (DATA|REF|OBJECT) DATA   -- как интерпретировать значение --
  type        %ContentType;  #IMPLIED  -- тип содержимого для значения,
                                          если valuetype=ref --
  >

<!--=================== Горизонтальный разделитель ==================================-->

<!ELEMENT HR - O EMPTY - горизонтальный разделитель -->
<!ATTLIST HR
  %coreattrs;                          -- id, class, style, title --
  %events;
  >

<!--=================== Абазцы =================================-->

<!ELEMENT P - O (%inline;)*            -- абзац
<!ATTLIST P
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!--=================== Заголовки ===============================-->

<!--
  Имеется шесть уровней заголовков: от H1 до
  H6 (наименее значимый).
-->

<!ELEMENT (%heading;)  - - (%inline;)* -- заголовок -->
<!ATTLIST (%heading;)
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!--=================== Форматированный текст ================================-->

<!-- исключает разметку для изображений и изменения размера шрифта -->
<!ENTITY % pre.exclusion "IMG|OBJECT|BIG|SMALL|SUB|SUP">

<!ELEMENT PRE - - (%inline;)* -(%pre.exclusion;) - форматированный текст -->
<!ATTLIST PRE
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!--===================== Встроенные цитаты ==================================-->

<!ELEMENT Q - - (%inline;)*            -- короткая встроенная цитата -->
<!ATTLIST Q
  %attrs;                              -- %coreattrs, %i18n, %events --
  cite        %URI;          #IMPLIED  -- URI для исходного документа или сообщения --
  >

<!--=================== Цитаты типа блока ================================-->

<!ELEMENT BLOCKQUOTE - - (%block;|SCRIPT)+ -- длинная цитата -->
<!ATTLIST BLOCKQUOTE
  %attrs;                              -- %coreattrs, %i18n, %events --
  cite        %URI;          #IMPLIED  -- URI исходного документа или сообщения --
  >

<!--=================== Вставленный/удаленный текст ============================-->

<!-- INS/DEL are handled by inclusion on BODY -->
<!ELEMENT (INS|DEL) - - (%flow;)*      -- вставленный текст, удаленный текст -->
<!ATTLIST (INS|DEL)
  %attrs;                              -- %coreattrs, %i18n, %events --
  cite        %URI;          #IMPLIED  -- информация о причинах изменения --
  datetime    %Datetime;     #IMPLIED  -- дата и время изменения --
  >

<!--=================== Списки ============================================-->

<!-- списки определений - DT - термин, DD - определение -->

<!ELEMENT DL - - (DT|DD)+              -- definition list -->
<!ATTLIST DL
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!ELEMENT DT - O (%inline;)*           -- определяемый термин -->
<!ELEMENT DD - O (%flow;)*             -- определение -->
<!ATTLIST (DT|DD)
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!ELEMENT OL - - (LI)+                 -- упорядоченный список -->
<!ATTLIST OL
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!-- Unordered Lists (UL) bullet styles -->
<!ELEMENT UL - - (LI)+                 -- неупорядоченный список -->
<!ATTLIST UL
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!ELEMENT LI - O (%flow;)*             -- элемент списка -->
<!ATTLIST LI
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!--================ Формы ===============================================-->
<!ELEMENT FORM - - (%block;|SCRIPT)+ -(FORM) - интерактивная форма -->
<!ATTLIST FORM
  %attrs;                              -- %coreattrs, %i18n, %events --
  action      %URI;          #REQUIRED -- серверный дексриптор формы --
  method      (GET|POST)     GET       -- метод HTTP, используемый для отправки формы --
  enctype     %ContentType;  "application/x-www-form-urlencoded"
  onsubmit    %Script;       #IMPLIED  -- форма отправлена --
  onreset     %Script;       #IMPLIED  -- форма сброшена --
  accept-charset %Charsets;  #IMPLIED  -- список поддерживаемых наборов символов --
  >

<!-- Each label must not contain more than ONE field -->
<!ELEMENT LABEL - - (%inline;)* -(LABEL) -- текст метки поля формы -->
<!ATTLIST LABEL
  %attrs;                              -- %coreattrs, %i18n, %events --
  for         IDREF          #IMPLIED  -- совпадает со значением поля ID --
  accesskey   %Character;    #IMPLIED  -- клавиша доступа --
  onfocus     %Script;       #IMPLIED  -- фокус перешел к элементу --
  onblur      %Script;       #IMPLIED  -- фокус ушел с элемента --
  >

<!ENTITY % InputType
  "(TEXT | PASSWORD | CHECKBOX |
    RADIO | SUBMIT | RESET |
    FILE | HIDDEN | IMAGE | BUTTON)"
   >

<!-- имя атрибута, обязательное для всех, кроме submit & reset -->
<!ELEMENT INPUT - O EMPTY              -- управляющий элемент формы -->
<!ATTLIST INPUT
  %attrs;                              -- %coreattrs, %i18n, %events --
  type        %InputType;    TEXT      -- что должно вводиться --
  name        CDATA          #IMPLIED  -- отправить как часть формы --
  value       CDATA          #IMPLIED  -- необходим для кнопок с зависимой фиксацией и флажков --
  checked     (checked)      #IMPLIED  -- для кнопок с зависимой фиксацией и флажков --
  disabled    (disabled)     #IMPLIED  -- в данном контексте недоступен --
  readonly    (readonly)     #IMPLIED  -- для текста и паролей --
  size        CDATA          #IMPLIED  -- для различно каждого типа поля --
  maxlength   NUMBER         #IMPLIED  -- максимальное число исмволов для текстовых полей --
  src         %URI;          #IMPLIED  -- для полей с изображениями --
  alt         CDATA          #IMPLIED  -- краткое описание --
  usemap      %URI;          #IMPLIED  -- использовать клиентскую навиагционную карту --
  tabindex    NUMBER         #IMPLIED  -- положение в последовательности перехода --
  accesskey   %Character;    #IMPLIED  -- клавиша доступа --
  onfocus     %Script;       #IMPLIED  -- фокус перешел на элемент --
  onblur      %Script;       #IMPLIED  -- фокус ушел с элемента --
  onselect    %Script;       #IMPLIED  -- выделен некоторый текст --
  onchange    %Script;       #IMPLIED  -- изменено знчение элемента --
  accept      %ContentTypes; #IMPLIED  -- список типов MIME для загрузки файлов --
  %reserved;                           -- зарезервировано для использования в будущем --
  >

<!ELEMENT SELECT - - (OPTGROUP|OPTION)+ -- выбор вариантов -->
<!ATTLIST SELECT
  %attrs;                              -- %coreattrs, %i18n, %events --
  name        CDATA          #IMPLIED  -- имя поля --
  size        NUMBER         #IMPLIED  -- видимые строки --
  multiple    (multiple)     #IMPLIED  -- по умолчанию в одинарном выборе --
  disabled    (disabled)     #IMPLIED  -- в данном контексте недоступно --
  tabindex    NUMBER         #IMPLIED  -- положение в последовательности перехода --
  onfocus     %Script;       #IMPLIED  -- фокус перешел к элементу --
  onblur      %Script;       #IMPLIED  -- фокус ушел с элемента --
  onchange    %Script;       #IMPLIED  -- значение элемента изменено --
  %reserved;                           -- зарезервировано для использования в будущем --
  >

<!ELEMENT OPTGROUP - - (OPTION)+ -- группа параметров -->
<!ATTLIST OPTGROUP
  %attrs;                              -- %coreattrs, %i18n, %events --
  disabled    (disabled)     #IMPLIED  -- в данном контексте недоступно --
  label       %Text;         #REQUIRED - для использования в иерархических меню --
  >

<!ELEMENT OPTION - O (#PCDATA)         -- выбираемый вариант -->
<!ATTLIST OPTION
  %attrs;                              -- %coreattrs, %i18n, %events --
  selected    (selected)     #IMPLIED
  disabled    (disabled)     #IMPLIED  -- в данном контексте недоступно --
  label       %Text;         #IMPLIED  -- для использования в иерархических меню --
  value       CDATA          #IMPLIED  -- по умолчанию - содержимое элемента --
  >

<!ELEMENT TEXTAREA - - (#PCDATA)       -- текстовое поле из нескольких строк -->
<!ATTLIST TEXTAREA
  %attrs;                              -- %coreattrs, %i18n, %events --
  name        CDATA          #IMPLIED
  rows        NUMBER         #REQUIRED
  cols        NUMBER         #REQUIRED
  disabled    (disabled)     #IMPLIED  -- в данном контексте недоступно --
  readonly    (readonly)     #IMPLIED
  tabindex    NUMBER         #IMPLIED  -- положение в последовательности перехода --
  accesskey   %Character;    #IMPLIED  -- клавиша доступа --
  onfocus     %Script;       #IMPLIED  -- фокус перешел к элементу --
  onblur      %Script;       #IMPLIED  -- фокус ушел с элемента --
  onselect    %Script;       #IMPLIED  -- выделен некоторый текст --
  onchange    %Script;       #IMPLIED  -- изменено значение элемента --
  %reserved;                           -- зарезервировано для использования в будущем --
  >

<!--
  #PCDATA используется для решения проблемы смешанного содержимого,
  здесь допустимы только пробельные символы!
 -->
<!ELEMENT FIELDSET - - (#PCDATA,LEGEND,(%flow;)*) - группа управляющих элементов формы -->
<!ATTLIST FIELDSET
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!ELEMENT LEGEND - - (%inline;)*       -- описание набора полей -->
<!ENTITY % LAlign "(top|bottom|left|right)">

<!ATTLIST LEGEND
  %attrs;                              -- %coreattrs, %i18n, %events --
  accesskey   %Character;    #IMPLIED  -- клавиша доступа --
  >

<!ELEMENT BUTTON - -
     (%flow;)* -(A|%formctrl;|FORM|FIELDSET)
     -- кнопка -->
<!ATTLIST BUTTON
  %attrs;                              -- %coreattrs, %i18n, %events --
  name        CDATA          #IMPLIED
  value       CDATA          #IMPLIED  -- при передаче отправляетя на сервер --
  type        (button|submit|reset) submit -- используется в качестве кнопки в форме --
  disabled    (disabled)     #IMPLIED  -- в данном контексте недоступно --
  tabindex    NUMBER         #IMPLIED  -- положение в последовательности переходов --
  accesskey   %Character;    #IMPLIED  -- клавиша доступа --
  onfocus     %Script;       #IMPLIED  -- фокус перешел на элемент --
  onblur      %Script;       #IMPLIED  -- фокус ушел с элемента --
  %reserved;                           -- зарезервировано для использования в будущем --
  >

<!--======================= Таблицы =======================================-->

<!-- Стандарт таблиц IETF HTML, см. [RFC1942] -->

<!--
 Атрибут BORDER устанавливает толщину рамки вокруг
 таблицы. По умолчанию используются пикселы.

 Атрибут FRAME определяет, какие части рамки вокруг
 таблицы должны представляться. Значения не совпадают с
 CALS во избежание конфликтов имен с атрибутом VALIGN.

 Значение "border" включено для совместимости с предыдущими версиями
 <TABLE BORDER>, уступив место frame=border и border=implied
 Для <TABLE BORDER=1> введены border=1 и frame=implied. В этом
 случае оно может обрабатываться как frame=border для совместимости
 с браузерами более старых версий.
-->
<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">

<!--
 Атрибут RULES определяет, какие rules между ячейками будут отображаться:

 Если атрибут RULES отсутстввует, предполагается:
     "none", если атрибут BORDER отсутствует или BORDER=0, в противном случае "all"
-->

<!ENTITY % TRules "(none | groups | rows | cols | all)">

<!-- горизонтальное размещение таблицы относительно документа -->
<!ENTITY % TAlign "(left|center|right)">

<!-- атрибуты горизонтального вырвнивания содержимого ячеек -->
<!ENTITY % cellhalign
  "align      (left|center|right|justify|char) #IMPLIED
   char       %Character;    #IMPLIED  -- символ выравнивания, например, char=':' --
   charoff    %Length;       #IMPLIED  -- смещение для символа выравнивания --"
  >

<!-- атрибуты вертикального выравнивания содержимого ячеек -->
<!ENTITY % cellvalign
  "valign     (top|middle|bottom|baseline) #IMPLIED"
  >

<!ELEMENT TABLE - -
     (CAPTION?, (COL*|COLGROUP*), THEAD?, TFOOT?, TBODY+)>
<!ELEMENT CAPTION  - - (%inline;)*     -- caption таблицы -->
<!ELEMENT THEAD    - O (TR)+           -- заголовок таблицы -->
<!ELEMENT TFOOT    - O (TR)+           -- нижний заголовок таблицы -->
<!ELEMENT TBODY    O O (TR)+           -- тело таблицы -->
<!ELEMENT COLGROUP - O (col)*          -- группа столбцов таблицы -->
<!ELEMENT COL      - O EMPTY           -- столбец таблицы -->
<!ELEMENT TR       - O (TH|TD)+        -- строка таблицы -->
<!ELEMENT (TH|TD)  - O (%flow;)*       -- ячейка заголовка таблицы, ячейка данных таблицы-->

<!ATTLIST TABLE                        -- элемент таблицы --
  %attrs;                              -- %coreattrs, %i18n, %events --
  summary     %Text;         #IMPLIED  -- назнчение/структура для речевого вывода--
  width       %Length;       #IMPLIED  -- ширина таблицы --
  border      %Pixels;       #IMPLIED  -- управляет толщиной рамки вокруг таблицы --
  frame       %TFrame;       #IMPLIED  -- какие части рамки нужно представлять --
  rules       %TRules;       #IMPLIED  -- разделители между строками и столбцами --
  cellspacing %Length;       #IMPLIED  -- расстояние между ячейками --
  cellpadding %Length;       #IMPLIED  -- расстояние в ячейках --
  %reserved;                           -- зарезервировано для использовния в будущем --
  datapagesize CDATA         #IMPLIED  -- зарезервировано для использовния в будущем --
  >

<!ENTITY % CAlign "(top|bottom|left|right)">

<!ATTLIST CAPTION
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!--
COLGROUP объяединяет ряд элементов COL. В можете
группировать несколько семантически связанных столбцов.
-->
<!ATTLIST COLGROUP
  %attrs;                              -- %coreattrs, %i18n, %events --
  span        NUMBER         1         -- число столбцов в группе по умолчанию --
  width       %MultiLength;  #IMPLIED  -- ширина вложенных COL по умолчанию --
  %cellhalign;                         -- горизонтальное выравнивание в ячейках --
  %cellvalign;                         -- вертикальное вырвнивание в ячейках --
  >

<!--
 Элементы COL определяют свойства выраванивания для ячеек
 в одном или нескольких столбцах.

 Атрибут WIDTH определяет ширину столбцов, например,

     width=64        ширина в пикселах
     width=0.5*      относительная ширина 0.5

 Атрибут SPAN приводит к тому, что атрибуты одного элемента
 COL приеняются к нскольким столбцам.
-->
<!ATTLIST COL                          -- группы и свойства столбцов --
  %attrs;                              -- %coreattrs, %i18n, %events --
  span        NUMBER         1         -- атрибуты COL влияют на N столбцов --
  width       %MultiLength;  #IMPLIED  -- задание ширины столбца --
  %cellhalign;                         -- горизонтальное выравнивание в ячейках --
  %cellvalign;                         -- вертикальное выравнивание в ячейках --
  >

<!--
    Используйте THEAD для дублирования заголовков при разрые
    таблицы на страницах ли для представления статических
    заголовков, когда разделы TBODY представляются на
    прокручиваемой панели.

    Используйте TFOOT для дублирования нижних заголовков при разрые
    таблицы на страницах ли для представления статических
    заголовков, когда разделы TBODY представляются на
    прокручиваемой панели.

    Используйте несколько разделов TBODY, если между группами строк
    таблицы необходимы rules.
-->
<!ATTLIST (THEAD|TBODY|TFOOT)          -- раздел таблицы --
  %attrs;                              -- %coreattrs, %i18n, %events --
  %cellhalign;                         -- горизонтальное выравнивание в ячейках --
  %cellvalign;                         -- вертикальное выравнивание в ячейках --
  >

<!ATTLIST TR                           -- строка таблицы --
  %attrs;                              -- %coreattrs, %i18n, %events --
  %cellhalign;                         -- горизонтальное выравнивание в ячейках --
  %cellvalign;                         -- вертикальное выраванивание в ячейках --
  >

<!-- Атрибут Scope проще атрибута axes для большинства таблиц -->
<!ENTITY % Scope "(row|col|rowgroup|colgroup)">

<!-- TH - для заголовков, TD - для данных, но для ячеек,
     действующих как то и другое используйте TD -->
<!ATTLIST (TH|TD)                      -- ячейка заголовка или данных --
  %attrs;                              -- %coreattrs, %i18n, %events --
  abbr        %Text;         #IMPLIED  -- сокращение ячейки заголовка --
  axis        CDATA          #IMPLIED  -- группы имен связанных заголовков--
  headers     IDREFS         #IMPLIED  -- списко идентификаторов ячеек заголовков --
  scope       %Scope;        #IMPLIED  -- область действия ячеек заголовков --
  rowspan     NUMBER         1         -- число строк, которые занимает ячейка --
  colspan     NUMBER         1         -- число столбцов, которые занимает ячейка --
  %cellhalign;                         -- горизонтальное выравнивание в ячейках --
  %cellvalign;                         -- вертикальное выравнивание в ячейках --
  >

<!--================ Заголовок документа =======================================-->
<!-- %head.misc; определен ранее как "SCRIPT|STYLE|META|LINK|OBJECT" -->
<!ENTITY % head.content "TITLE & BASE?">

<!ELEMENT HEAD O O (%head.content;) +(%head.misc;) - заголовок документа -->
<!ATTLIST HEAD
  %i18n;                               -- lang, dir --
  profile     %URI;          #IMPLIED  -- именованный словарь метаинформации --
  >

<!-- Элемент TITLE не считается частью потока текста.
       Он должен отображаться, например, в виде заголовка страницы
       или окна. У кажого документа должен быть ровно один заголовок.
    -->
<!ELEMENT TITLE - - (#PCDATA) -(%head.misc;) - заголовок документа -->
<!ATTLIST TITLE %i18n>

<!ELEMENT BASE - O EMPTY               -- базовый URI документа -->
<!ATTLIST BASE
  href        %URI;          #REQUIRED -- URI, служащий базовым --
  >

<!ELEMENT META - O EMPTY               -- общая метаинформация -->
<!ATTLIST META
  %i18n;                               -- lang, dir, для использования с содержимым --
  http-equiv  NAME           #IMPLIED  -- имя заголовка ответа HTTP --
  name        NAME           #IMPLIED  -- имя метаинформации --
  content     CDATA          #REQUIRED - связанная инфомрация --
  scheme      CDATA          #IMPLIED  -- выбор формы содержимого --
  >

<!ELEMENT STYLE - - %StyleSheet        -- информация о стиле -->
<!ATTLIST STYLE
  %i18n;                               -- lang, dir, для использвоания с заголовком --
  type        %ContentType;  #REQUIRED -- тип содержимого языка стиля --
  media       %MediaDesc;    #IMPLIED  -- для использования с данными устройствами --
  title       %Text;         #IMPLIED  -- необязательный заголовок --
  >

<!ELEMENT SCRIPT - - %Script;          -- выражения скрипта -->
<!ATTLIST SCRIPT
  charset     %Charset;      #IMPLIED  -- кодировка связанного ресурса --
  type        %ContentType;  #REQUIRED -- тип содержимого языка скрипта --
  language    CDATA          #IMPLIED  -- предопределенное имя языка скрипта --
  src         %URI;          #IMPLIED  -- URI внешнего скрипта --
  defer       (defer)        #IMPLIED  -- агент пользователя может отложить выполнение
                                          скрипта --
  event       CDATA          #IMPLIED  -- зарезервировано для использования в будущем --
  for         %URI;          #IMPLIED  -- зарезервировано для использования в будущем --
  >

<!ELEMENT NOSCRIPT - - (%block;)+
  -- контейнер альтернативного содержимого для представления без использования скриптов -->
<!ATTLIST NOSCRIPT
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!--================ Структура документа ==================================-->
<!ENTITY % html.content "HEAD, BODY">

<!ELEMENT HTML O O (%html.content;)    -- корневой элмент документа -->
<!ATTLIST HTML
  %i18n;                               -- lang, dir --
  >


Указатель элементов HTML 4.0

Указатель элементов

Условные обозначения: Необязательный, Запрещен, Пустой, Нежелательный, Loose DTD, Frameset DTD
Имя | Нач. тег | Кон. тег | Пуст | Нежелат. | DTD | Описание
A |  |  |  |  |  | якорь
ABBR |  |  |  |  |  | сокращенная форма (например, WWW, HTTP и т.д.)
ACRONYM |  |  |  |  |  |
ADDRESS |  |  |  |  |  | информация об авторе
APPLET |  |  |  | Н | L | апплет Java
AREA |  | З | П |  |  | область клиентского изображения-карты
B |  |  |  |  |  | полужирный текст
BASE |  | З | П |  |  | базовый URI документа
BASEFONT |  | З | П | Н | L | базовый размер шрифта
BDO |  |  |  |  |  | I18N BiDi over-ride
BIG |  |  |  |  |  | большой текст
BLOCKQUOTE |  |  |  |  |  | цитата
BODY | Н | Н |  |  |  | тело документа
BR |  | З | П |  |  | жесткий перевод строки
BUTTON |  |  |  |  |  | кнопка
CAPTION |  |  |  |  |  | заголовок таблицы
CENTER |  |  |  | Н | L | сокращение для DIV align=center
CITE |  |  |  |  |  | цитата
CODE |  |  |  |  |  | фрагмент компьютерного кода
COL |  | З | П |  |  | столбец таблицы
COLGROUP |  | Н |  |  |  | группа столбцов таблицы
DD |  | Н |  |  |  | описание определения
DEL |  |  |  |  |  | удаленный текст
DFN |  |  |  |  |  | определение экземпляра
DIR |  |  |  | Н | L | список каталогов
DIV |  |  |  |  |  | общий контейнер языка/стиля
DL |  |  |  |  |  | список определений
DT |  | Н |  |  |  | определяемый термин
EM |  |  |  |  |  | выделение
FIELDSET |  |  |  |  |  | группа управляющих элементов формы
FONT |  |  |  | Н | L | локальное изменение шрифта
FORM |  |  |  |  |  | интерактивная форма
FRAME |  | З | П |  | F | вложенное окно
FRAMESET |  |  |  |  | F | разделение окна
H1 |  |  |  |  |  | заголовок
H2 |  |  |  |  |  | заголовок
H3 |  |  |  |  |  | заголовок
H4 |  |  |  |  |  | заголовок
H5 |  |  |  |  |  | заголовок
H6 |  |  |  |  |  | заголовок
HEAD | Н | Н |  |  |  | заголовок документа
HR |  | F | П |  |  | горизонтальный разделитель
HTML | Н | Н |  |  |  | корневой элемент документа
I |  |  |  |  |  | курсив
IFRAME |  |  |  |  | L | встроенное окно
IMG |  | З | П |  |  | внедренное изображение
INPUT |  | З | П |  |  | управляющий элемент формы
INS |  |  |  |  |  | вставленный текст
ISINDEX |  | З | П | Н | L | запрос из одной строки
KBD |  |  |  |  |  | текст, вводимый пользователем
LABEL |  |  |  |  |  | текст метки поля формы
LEGEND |  |  |  |  |  | описание набора полей
LI |  | Н |  |  |  | элемент списка
LINK |  | З | П |  |  | не зависящая от устройства ссылка
MAP |  |  |  |  |  | клиентское изображение-карта
MENU |  |  |  | Н | L | список меню
META |  | З | П |  |  | общая метаинформация
NOFRAMES |  |  |  |  | F | альтернативный контейнер содержимого для представления без фреймов
NOSCRIPT |  |  |  |  |  | альтернативный контейнер содержимого для представления без скриптов
OBJECT |  |  |  |  |  | общий внедренный объект
OL |  |  |  |  |  | упорядоченный список
OPTGROUP |  |  |  |  |  | группа опций
OPTION |  | Н |  |  |  | выбираемый элемент
P |  | Н |  |  |  | абзац
PARAM |  | З | П |  |  | значение именованного свойства
PRE |  |  |  |  |  | форматированный текст
Q |  |  |  |  |  | короткая встроенная цитата
S |  |  |  | Н | L | перечеркнутый текст
SAMP |  |  |  |  |  | пример вывода программы, скрипта и т.д.
SCRIPT |  |  |  |  |  | выражения скрипта
SELECT |  |  |  |  |  | выбор варианта
SMALL |  |  |  |  |  | мелкий текст
SPAN |  |  |  |  |  | общий контейнер языка/стиля
STRIKE |  |  |  | З | L | перечеркнутый текст
STRONG |  |  |  |  |  | усиленное выделение
STYLE |  |  |  |  |  | инфомрация о стиле
SUB |  |  |  |  |  | нижний индекс
SUP |  |  |  |  |  | верхний индекс
TABLE |  |  |  |  |  |
TBODY | Н | Н |  |  |  | тело таблицы
TD |  | Н |  |  |  | ячейка данных таблицы
TEXTAREA |  |  |  |  |  | текстовое поле из нескольких строк
TFOOT |  | Н |  |  |  | сноска таблицы
TH |  | Н |  |  |  | заголовок ячейки таблицы
THEAD |  | Н |  |  |  | заголовок таблицы
TITLE |  |  |  |  |  | название документа
TR |  | Н |  |  |  | строка таблицы
TT |  |  |  |  |  | шрифт пишущей машинки (моноширинный)
U |  |  |  | Н | L | подчеркнутый текст
UL |  |  |  |  |  | неупорядоченный список
VAR |  |  |  |  |  | экземпляр переменной или аргумента программы


Character entity references in HTML 4.0

24 Ссылки на комбинации символов в HTML 4.0

  1. Введение в ссылки на комбинации символов
  2. Ссылки на наборы символов ISO 8859-1
    1. Список символов
  3. Ссылки на символы, математические символы и буквы греческого алфавита
    1. Список символов
  4. Ссылки на значимые для разметки символы и символы интернационализации
    1. Список символов

24.1 Введение в ссылки на комбинации символов

Ссылка на комбинацию символов - это конструкция SGML, которая ссылается на символ из набора символов документа.

В данной версии HTML поддерживается несколько наборов ссылок на комбинации символов:

  • символы набора ISO 8859-1 (Latin-1) В соответствии с разделом 14 [RFC1866], набор объектов Latin-1 в данной спецификации расширяется и включает весь набор правой части ISO-8859-1 (все позиции кодов с установленным высшим разрядом), включая повсеместно используемые &nbsp;, &copy; и &reg;. Имена комбинаций берутся из дополнений к SGML (defined in [ISO8879]).
  • символы, математические символы и буквы греческого алфавита. Эти символы могут представляться знаками шрифта "Symbol" фирмы Adobe.
  • значимые символы разметки и интернационализации (например, для двунаправленного текста).

В следующих разделах представлены полные списки ссылок на комбинации символов. Хотя по соглашению имена [ISO10646] записываются буквами верхнего регистра, мы преобразовали их в нижний для удобства чтения.

24.2 Ссылки на наборы символов ISO 8859-1

Ссылки, перечисленные в данном разделе, позволяют обратиться к символам, числовые эквиваленты которых уже должны поддерживаться агентами пользователей, соответствующими спецификации HTML 2.0. Для доступа к знаку деления (÷) гораздо удобнее использовать ссылку &divide;, чем &#247;.

Для поддержки таких именованных комбинаций агентам пользователя необходимо лишь распознавать имена объектов и преобразовывать их в символы набора [ISO88591].

Символ 65533 (шестнадцатеричный код FFFD) является последним допустимым символом набора UCS-2. 65534 (шестнадцатеричный код FFFE) зарезервирован как версия НЕРАЗРЫВНОГО ПРОБЕЛА НУЛЕВОЙ ШИРИНЫ с перестановкой байтов с целью определения порядка байтов. Символ 65535 (шестнадцатеричный код FFFF) не назначен.

24.2.1 Список символов

<!-- Частичное © Международная организация по стандартизации 1986
     Разрешение на копирование в любой форме дается для использования с
     соответствующими системами и приложениями SGML в соответствии со стандартом
     ISO 8879 при условии, что данное замечание включено во все копии.
-->
<!-- Набор комбинаций символов. Типичный вызов:
     <!ENTITY % HTMLlat1 PUBLIC
       "-//W3C//ENTITIES Full Latin 1//EN//HTML">
     %HTMLlat1;
-->

<!ENTITY nbsp   CDATA "&#160;" -- неразрывный пробел,
                                  U+00A0 ISOnum -->
<!ENTITY iexcl  CDATA "&#161;" -- перевернутый восклицательный знак, U+00A1 ISOnum -->
<!ENTITY cent   CDATA "&#162;" -- знак цента, U+00A2 ISOnum -->
<!ENTITY pound  CDATA "&#163;" -- знак фунта, U+00A3 ISOnum -->
<!ENTITY curren CDATA "&#164;" -- знак валюты, U+00A4 ISOnum -->
<!ENTITY yen    CDATA "&#165;" -- знак йены и юаня, U+00A5 ISOnum -->
<!ENTITY brvbar CDATA "&#166;" -- изломанная вертикальня черта,
                                  U+00A6 ISOnum -->
<!ENTITY sect   CDATA "&#167;" -- знак раздела, U+00A7 ISOnum -->
<!ENTITY uml    CDATA "&#168;" -- трема,
                                  U+00A8 ISOdia -->
<!ENTITY copy   CDATA "&#169;" -- знак авторского права, U+00A9 ISOnum -->
<!ENTITY ordf   CDATA "&#170;" -- указатель порядкового числительного женского рода,
                                  U+00AA ISOnum -->
<!ENTITY laquo  CDATA "&#171;" -- двойные угловые левые кавычки, U+00AB ISOnum -->
<!ENTITY not    CDATA "&#172;" -- знак отрицания,
                                  U+00AC ISOnum -->
<!ENTITY shy    CDATA "&#173;" -- мягкий перенос,
                                  U+00AD ISOnum -->
<!ENTITY reg    CDATA "&#174;" -- знак зарегистрированной торговой марки,
                                  U+00AE ISOnum -->
<!ENTITY macr   CDATA "&#175;" -- знак долготы над гласными = overline
                                  = APL overbar, U+00AF ISOdia -->
<!ENTITY deg    CDATA "&#176;" -- знак градуса, U+00B0 ISOnum -->
<!ENTITY plusmn CDATA "&#177;" -- знак плюс-минус,
                                  U+00B1 ISOnum -->
<!ENTITY sup2   CDATA "&#178;" -- два в верхнем индексе
                                  = квадрат, U+00B2 ISOnum -->
<!ENTITY sup3   CDATA "&#179;" -- три в верхнем индексе
                                  = куб, U+00B3 ISOnum -->
<!ENTITY acute  CDATA "&#180;" -- знак ударения,
                                  U+00B4 ISOdia -->
<!ENTITY micro  CDATA "&#181;" -- знак микро, U+00B5 ISOnum -->
<!ENTITY para   CDATA "&#182;" -- знак pilcrow sign = знак абзаца,
                                  U+00B6 ISOnum -->
<!ENTITY middot CDATA "&#183;" -- средня точка = запятая в Грузии
                                  = средняя точка в Греции, U+00B7 ISOnum -->
<!ENTITY cedil  CDATA "&#184;" -- седиль, U+00B8 ISOdia -->
<!ENTITY sup1   CDATA "&#185;" -- один в верхнем индексе,
                                  U+00B9 ISOnum -->
<!ENTITY ordm   CDATA "&#186;" -- указатель порядкового числительного мужского рода,
                                  U+00BA ISOnum -->
<!ENTITY raquo  CDATA "&#187;" -- правая двойная угловая кавычка, U+00BB ISOnum -->
<!ENTITY frac14 CDATA "&#188;" -- одна четверть, U+00BC ISOnum -->
<!ENTITY frac12 CDATA "&#189;" -- одна вторая, U+00BD ISOnum -->
<!ENTITY frac34 CDATA "&#190;" -- три четверти, U+00BE ISOnum -->
<!ENTITY iquest CDATA "&#191;" -- перевернутый вопросительный знак, U+00BF ISOnum -->
<!ENTITY Agrave CDATA "&#192;" -- заглавная латинская буква A с тупым ударением,
                                  U+00C0 ISOlat1 -->
<!ENTITY Aacute CDATA "&#193;" -- заглавная латинская буква A с ударением,
                                  U+00C1 ISOlat1 -->
<!ENTITY Acirc  CDATA "&#194;" -- заглавная латинская буква A с циркумфлексом,
                                  U+00C2 ISOlat1 -->
<!ENTITY Atilde CDATA "&#195;" -- заглавная латинская буква A с тильдой,
                                  U+00C3 ISOlat1 -->
<!ENTITY Auml   CDATA "&#196;" -- заглавная латинская буква A с тремой,
                                  U+00C4 ISOlat1 -->
<!ENTITY Aring  CDATA "&#197;" -- заглавная латинская буква A с кружочком,
                                  U+00C5 ISOlat1 -->
<!ENTITY AElig  CDATA "&#198;" -- заглавная латинская буква AE,
                                  U+00C6 ISOlat1 -->
<!ENTITY Ccedil CDATA "&#199;" -- заглавная латинская буква C с седилем,
                                  U+00C7 ISOlat1 -->
<!ENTITY Egrave CDATA "&#200;" -- заглавная латинская буква E с тупым ударением,
                                  U+00C8 ISOlat1 -->
<!ENTITY Eacute CDATA "&#201;" -- заглавная латинская буква E с ударением,
                                  U+00C9 ISOlat1 -->
<!ENTITY Ecirc  CDATA "&#202;" -- заглавная латинская буква E с циркумфлексом,
                                  U+00CA ISOlat1 -->
<!ENTITY Euml   CDATA "&#203;" -- заглавная латинская буква E с тремой,
                                  U+00CB ISOlat1 -->
<!ENTITY Igrave CDATA "&#204;" -- заглавная латинская буква I с тупым ударением,
                                  U+00CC ISOlat1 -->
<!ENTITY Iacute CDATA "&#205;" -- заглавная латинская буква I с ударением,
                                  U+00CD ISOlat1 -->
<!ENTITY Icirc  CDATA "&#206;" -- заглавная латинская буква I с циркумфлексом,
                                  U+00CE ISOlat1 -->
<!ENTITY Iuml   CDATA "&#207;" -- заглавная латинская буква I с тремой,
                                  U+00CF ISOlat1 -->
<!ENTITY ETH    CDATA "&#208;" -- заглавная латинская буква ETH, U+00D0 ISOlat1 -->
<!ENTITY Ntilde CDATA "&#209;" -- заглавная латинская буква N с тильдой,
                                  U+00D1 ISOlat1 -->
<!ENTITY Ograve CDATA "&#210;" -- заглавная латинская буква O с тупым ударением,
                                  U+00D2 ISOlat1 -->
<!ENTITY Oacute CDATA "&#211;" -- заглавная латинская буква O с ударением,
                                  U+00D3 ISOlat1 -->
<!ENTITY Ocirc  CDATA "&#212;" -- заглавная латинская буква O с циркумфлексом,
                                  U+00D4 ISOlat1 -->
<!ENTITY Otilde CDATA "&#213;" -- заглавная латинская буква O с тильдой,
                                  U+00D5 ISOlat1 -->
<!ENTITY Ouml   CDATA "&#214;" -- заглавная латинская буква O с тремой,
                                  U+00D6 ISOlat1 -->
<!ENTITY times  CDATA "&#215;" -- знак умножения, U+00D7 ISOnum -->
<!ENTITY Oslash CDATA "&#216;" -- перечеркнутая заглавная латинская буква O,
                                  U+00D8 ISOlat1 -->
<!ENTITY Ugrave CDATA "&#217;" -- заглавная латинская буква U с тупым ударением,
                                  U+00D9 ISOlat1 -->
<!ENTITY Uacute CDATA "&#218;" -- заглавная латинская буква U с ударением,
                                  U+00DA ISOlat1 -->
<!ENTITY Ucirc  CDATA "&#219;" -- заглавная латинская буква U с циркумфлексом,
                                  U+00DB ISOlat1 -->
<!ENTITY Uuml   CDATA "&#220;" -- заглавная латинская буква U с тремой,
                                  U+00DC ISOlat1 -->
<!ENTITY Yacute CDATA "&#221;" -- заглавная латинская буква Y с ударением,
                                  U+00DD ISOlat1 -->
<!ENTITY THORN  CDATA "&#222;" -- заглавная латинская буква THORN,
                                  U+00DE ISOlat1 -->
<!ENTITY szlig  CDATA "&#223;" -- строчная латинская острая буква s = ess-zed,
                                  U+00DF ISOlat1 -->
<!ENTITY agrave CDATA "&#224;" -- строчная латинская буква a с тупым ударением,
                                  U+00E0 ISOlat1 -->
<!ENTITY aacute CDATA "&#225;" -- строчная латинская буква a с ударением,
                                  U+00E1 ISOlat1 -->
<!ENTITY acirc  CDATA "&#226;" -- строчная латинская буква a с циркумфлексом,
                                  U+00E2 ISOlat1 -->
<!ENTITY atilde CDATA "&#227;" -- строчная латинская буква a с тильдой,
                                  U+00E3 ISOlat1 -->
<!ENTITY auml   CDATA "&#228;" -- строчная латинская буква a с тремой,
                                  U+00E4 ISOlat1 -->
<!ENTITY aring  CDATA "&#229;" -- строчная латинская буква a с кружком,
                                  U+00E5 ISOlat1 -->
<!ENTITY aelig  CDATA "&#230;" -- строчная латинская буква ae, U+00E6 ISOlat1 -->
<!ENTITY ccedil CDATA "&#231;" -- строчная латинская буква c с седилем,
                                  U+00E7 ISOlat1 -->
<!ENTITY egrave CDATA "&#232;" -- строчная латинская буква e с тупым ударением,
                                  U+00E8 ISOlat1 -->
<!ENTITY eacute CDATA "&#233;" -- строчная латинская буква e с ударением,
                                  U+00E9 ISOlat1 -->
<!ENTITY ecirc  CDATA "&#234;" -- строчная латинская буква e с циркумфлексом,
                                  U+00EA ISOlat1 -->
<!ENTITY euml   CDATA "&#235;" -- строчная латинская буква e с тремой,
                                  U+00EB ISOlat1 -->
<!ENTITY igrave CDATA "&#236;" -- строчная латинская буква i с тупым ударением,
                                  U+00EC ISOlat1 -->
<!ENTITY iacute CDATA "&#237;" -- строчная латинская буква i с ударением,
                                  U+00ED ISOlat1 -->
<!ENTITY icirc  CDATA "&#238;" -- строчная латинская буква i с циркумфлексом,
                                  U+00EE ISOlat1 -->
<!ENTITY iuml   CDATA "&#239;" -- строчная латинская буква i с тремой,
                                  U+00EF ISOlat1 -->
<!ENTITY eth    CDATA "&#240;" -- строчная латинская буква eth, U+00F0 ISOlat1 -->
<!ENTITY ntilde CDATA "&#241;" -- строчная латинская буква n с тильдой,
                                  U+00F1 ISOlat1 -->
<!ENTITY ograve CDATA "&#242;" -- строчная латинская буква o с тупым ударением,
                                  U+00F2 ISOlat1 -->
<!ENTITY oacute CDATA "&#243;" -- строчная латинская буква o с ударением,
                                  U+00F3 ISOlat1 -->
<!ENTITY ocirc  CDATA "&#244;" -- строчная латинская буква o с циркумфлексом,
                                  U+00F4 ISOlat1 -->
<!ENTITY otilde CDATA "&#245;" -- строчная латинская буква o с тильдой,
                                  U+00F5 ISOlat1 -->
<!ENTITY ouml   CDATA "&#246;" -- строчная латинская буква o с тремой,
                                  U+00F6 ISOlat1 -->
<!ENTITY divide CDATA "&#247;" -- division sign, U+00F7 ISOnum -->
<!ENTITY oslash CDATA "&#248;" -- строчная латинская буква o перечеркнутая,
                                  U+00F8 ISOlat1 -->
<!ENTITY ugrave CDATA "&#249;" -- строчная латинская буква u с тупым ударением,
                                  U+00F9 ISOlat1 -->
<!ENTITY uacute CDATA "&#250;" -- строчная латинская буква u с ударением,
                                  U+00FA ISOlat1 -->
<!ENTITY ucirc  CDATA "&#251;" -- строчная латинская буква u с циркумфлексом,
                                  U+00FB ISOlat1 -->
<!ENTITY uuml   CDATA "&#252;" -- строчная латинская буква u с тремой,
                                  U+00FC ISOlat1 -->
<!ENTITY yacute CDATA "&#253;" -- строчная латинская буква y с ударением,
                                  U+00FD ISOlat1 -->
<!ENTITY thorn  CDATA "&#254;" -- строчная латинская буква thorn with,
                                  U+00FE ISOlat1 -->
<!ENTITY yuml   CDATA "&#255;" -- строчная латинская буква y с тремой,
                                  U+00FF ISOlat1 -->

24.3 Ссылки на символы, математические символы и буквы греческого алфавита

Ссылки, перечисленные в этом разделе, позволяют обратиться к символам, представляемым знаками широко используемого шрифта Symbolфимры Adobe, включая буквы греческого алфавита, различные скобки и ряд математических операторов типа градиента, произведения и суммы.

Для поддержки этих комбинаций агенты пользователей должны поддерживать полный набор [ISO10646] или использовать другие средства. Отображение иероглифов может достигаться за счет возможности отображения соответствующих символов набора [ISO10646] или иными средствами, например, внутренним отображением на перечисленные символы, числовыми ссылками на символы в соответствующей позиции в некотором шрифте, содержащем запрошенные иероглифы.

Когда нужно использовать греческие символы. Этот набор символов содержит все буквы, используемые в современном греческом языке. Однако сюда не входят греческие символы пунктуации, символы с ударением, а также неразрывные ударения (тонос, диалитика), необходимые для их составления. Не включены устаревшие буквы, коптские буквы и буквы политонического греческого языка. Определенные здесь объекты не предназначены для представления современного греческого текста; они предназначены для представления отдельных греческих букв, используемых в математических работах.

24.3.1 Список символов

<!-- Математические символы и знаки и буквы греческого алфавита для HTML -->

<!-- Набор ссылок на символы. Типичный вызов:
     <!ENTITY % HTMLsymbol PUBLIC
       "-//W3C//ENTITIES Symbolic//EN//HTML">
     %HTMLsymbol; -->

<!-- Частичное © Международная организация по стандартизации 1986:
     Разрешение на копирование в любой форме дается для использования с
     соответствующими системами и приложениями SGML в соответствии со
     стандартом ISO 8879 при условии, что данное замечание включено во все копии.
-->

<!-- Если имена не являются новыми, дается соответствующий объект ISO.
     Новые имена (не входящие в список ISO 8879) не конфликтуют
     с существующими именами объектов ISO 8879. Номера ISO 10646
     даются для каждого символа в шестнадцатеричном формате. Значения CDATA
     являются десятичным выражением значений ISO 10646 и относятся к набору
     символов документа. Имена являются именами Unicode 2.0.

-->

<!-- Latin Extended-B -->
<!ENTITY fnof     CDATA "&#402;" -- строчная латинская буква f с крючком
                                    = флорин, U+0192 ISOtech -->

<!-- Greek -->
<!ENTITY Alpha    CDATA "&#913;" -- греческая заглавная буква альфа, U+0391 -->
<!ENTITY Beta     CDATA "&#914;" -- греческая заглавная буква бета, U+0392 -->
<!ENTITY Gamma    CDATA "&#915;" -- греческая заглавная буква гамма,
                                    U+0393 ISOgrk3 -->
<!ENTITY Delta    CDATA "&#916;" -- греческая заглавная буква дельта,
                                    U+0394 ISOgrk3 -->
<!ENTITY Epsilon  CDATA "&#917;" -- греческая заглавная буква эпсилон, U+0395 -->
<!ENTITY Zeta     CDATA "&#918;" -- греческая заглавная буква джета, U+0396 -->
<!ENTITY Eta      CDATA "&#919;" -- греческая заглавная буква эта, U+0397 -->
<!ENTITY Theta    CDATA "&#920;" -- греческая заглавная буква тета,
                                    U+0398 ISOgrk3 -->
<!ENTITY Iota     CDATA "&#921;" -- греческая заглавная буква йота, U+0399 -->
<!ENTITY Kappa    CDATA "&#922;" -- греческая заглавная буква каппа, U+039A -->
<!ENTITY Lambda   CDATA "&#923;" -- греческая заглавная буква лямбда,
                                    U+039B ISOgrk3 -->
<!ENTITY Mu       CDATA "&#924;" -- греческая заглавная буква мю, U+039C -->
<!ENTITY Nu       CDATA "&#925;" -- греческая заглавная буква ню, U+039D -->
<!ENTITY Xi       CDATA "&#926;" -- греческая заглавная буква кси, U+039E ISOgrk3 -->
<!ENTITY Omicron  CDATA "&#927;" -- греческая заглавная буква омикрон, U+039F -->
<!ENTITY Pi       CDATA "&#928;" -- греческая заглавная буква пи, U+03A0 ISOgrk3 -->
<!ENTITY Rho      CDATA "&#929;" -- греческая заглавная буква ро, U+03A1 -->
<!-- символы сигма ф и U+03A2 отсутствуют -->
<!ENTITY Sigma    CDATA "&#931;" -- греческая заглавная буква сигма,
                                    U+03A3 ISOgrk3 -->
<!ENTITY Tau      CDATA "&#932;" -- греческая заглавная буква тау, U+03A4 -->
<!ENTITY Upsilon  CDATA "&#933;" -- греческая заглавная буква ипсилон,
                                    U+03A5 ISOgrk3 -->
<!ENTITY Phi      CDATA "&#934;" -- греческая заглавная буква фи,
                                    U+03A6 ISOgrk3 -->
<!ENTITY Chi      CDATA "&#935;" -- греческая заглавная буква хи, U+03A7 -->
<!ENTITY Psi      CDATA "&#936;" -- греческая заглавная буква пси,
                                    U+03A8 ISOgrk3 -->
<!ENTITY Omega    CDATA "&#937;" -- греческая заглавная буква омега,
                                    U+03A9 ISOgrk3 -->

<!ENTITY alpha    CDATA "&#945;" -- греческая строчная буква альфа,
                                    U+03B1 ISOgrk3 -->
<!ENTITY beta     CDATA "&#946;" -- греческая строчная буква бета, U+03B2 ISOgrk3 -->
<!ENTITY gamma    CDATA "&#947;" -- греческая строчная буква гамма,
                                    U+03B3 ISOgrk3 -->
<!ENTITY delta    CDATA "&#948;" -- греческая строчная буква дельта,
                                    U+03B4 ISOgrk3 -->
<!ENTITY epsilon  CDATA "&#949;" -- греческая строчная буква эпсилон,
                                    U+03B5 ISOgrk3 -->
<!ENTITY zeta     CDATA "&#950;" -- греческая строчная буква дзета, U+03B6 ISOgrk3 -->
<!ENTITY eta      CDATA "&#951;" -- греческая строчная буква эта, U+03B7 ISOgrk3 -->
<!ENTITY theta    CDATA "&#952;" -- греческая строчная буква тета,
                                    U+03B8 ISOgrk3 -->
<!ENTITY iota     CDATA "&#953;" -- греческая строчная буква йота, U+03B9 ISOgrk3 -->
<!ENTITY kappa    CDATA "&#954;" -- греческая строчная буква каппа,
                                    U+03BA ISOgrk3 -->
<!ENTITY lambda   CDATA "&#955;" -- греческая строчная буква лямбда,
                                    U+03BB ISOgrk3 -->
<!ENTITY mu       CDATA "&#956;" -- греческая строчная буква мю, U+03BC ISOgrk3 -->
<!ENTITY nu       CDATA "&#957;" -- греческая строчная буква ню, U+03BD ISOgrk3 -->
<!ENTITY xi       CDATA "&#958;" -- греческая строчная буква кси, U+03BE ISOgrk3 -->
<!ENTITY omicron  CDATA "&#959;" -- греческая строчная буква омикрон, U+03BF NEW -->
<!ENTITY pi       CDATA "&#960;" -- греческая строчная буква пи, U+03C0 ISOgrk3 -->
<!ENTITY rho      CDATA "&#961;" -- греческая строчная буква ро, U+03C1 ISOgrk3 -->
<!ENTITY sigmaf   CDATA "&#962;" -- греческая строчная буква конечная сигма,
                                    U+03C2 ISOgrk3 -->
<!ENTITY sigma    CDATA "&#963;" -- греческая строчная буква сигма,
                                    U+03C3 ISOgrk3 -->
<!ENTITY tau      CDATA "&#964;" -- греческая строчная буква тау, U+03C4 ISOgrk3 -->
<!ENTITY upsilon  CDATA "&#965;" -- греческая строчная буква ипсилон,
                                    U+03C5 ISOgrk3 -->
<!ENTITY phi      CDATA "&#966;" -- греческая строчная буква фи, U+03C6 ISOgrk3 -->
<!ENTITY chi      CDATA "&#967;" -- греческая строчная буква хи, U+03C7 ISOgrk3 -->
<!ENTITY psi      CDATA "&#968;" -- греческая строчная буква пси, U+03C8 ISOgrk3 -->
<!ENTITY omega    CDATA "&#969;" -- греческая строчная буква омега,
                                    U+03C9 ISOgrk3 -->
<!ENTITY thetasym CDATA "&#977;" -- греческая строчная буква тета,
                                    U+03D1 NEW -->
<!ENTITY upsih    CDATA "&#978;" -- греческий символ ипсилон с крючком,
                                    U+03D2 NEW -->
<!ENTITY piv      CDATA "&#982;" -- греческий символ пи, U+03D6 ISOgrk3 -->

<!-- Общая пунктуция -->
<!ENTITY bull     CDATA "&#8226;" -- маркер = небольшой черный кружок,
                                     U+2022 ISOpub  -->
<!-- маркер и оператор маркера, U+2219 - не одно и то же -->
<!ENTITY hellip   CDATA "&#8230;" -- горизонтальное многоточие,
                                     U+2026 ISOpub  -->
<!ENTITY prime    CDATA "&#8242;" -- штрих (минуты, футы), U+2032 ISOtech -->
<!ENTITY Prime    CDATA "&#8243;" -- двойной штрих (секунды, дюймы),
                                     U+2033 ISOtech -->
<!ENTITY oline    CDATA "&#8254;" -- надчеркивание,
                                     U+203E NEW -->
<!ENTITY frasl    CDATA "&#8260;" -- дробная черта, U+2044 NEW -->

<!-- Символы типа букв -->
<!ENTITY weierp   CDATA "&#8472;" -- рукописная заглавня P,
                                     U+2118 ISOamso -->
<!ENTITY image    CDATA "&#8465;" -- заглавная готическая I = мнимая часть,
                                     U+2111 ISOamso -->
<!ENTITY real     CDATA "&#8476;" -- готическая заглавная R = реальня часть,
                                     U+211C ISOamso -->
<!ENTITY trade    CDATA "&#8482;" -- знак торговой марки, U+2122 ISOnum -->
<!ENTITY alefsym  CDATA "&#8501;" -- символ алеф = первое трансфинитное числительное,
                                     U+2135 NEW -->
<!-- символ алеф - это НЕ бква алеф ивритского алфавита,
     U+05D0, хотя для обозначения обоих символов может использоваться один иероглиф-->

<!-- Arrows -->
<!ENTITY larr     CDATA "&#8592;" -- стрелка влево, U+2190 ISOnum -->
<!ENTITY uarr     CDATA "&#8593;" -- стрелка вверх, U+2191 ISOnum-->
<!ENTITY rarr     CDATA "&#8594;" -- стрелка вправо, U+2192 ISOnum -->
<!ENTITY darr     CDATA "&#8595;" -- стрелка вниз, U+2193 ISOnum -->
<!ENTITY harr     CDATA "&#8596;" -- стрелка влево и вправо, U+2194 ISOamsa -->
<!ENTITY crarr    CDATA "&#8629;" -- угловая стрелка влево вниз
                                     = возврат каретки, U+21B5 NEW -->
<!ENTITY lArr     CDATA "&#8656;" -- двойная стрелка влево, U+21D0 ISOtech -->
<!-- В Unicode не говорится, что lArr и стрелка 'импликации' -
    одно и то же, но для этой функции не имеется специального символа. Поэтому для
    'импликации' может использовать ? lArr в соответствии с ISOtech -->
<!ENTITY uArr     CDATA "&#8657;" -- двойная стрелка вверх, U+21D1 ISOamsa -->
<!ENTITY rArr     CDATA "&#8658;" -- двойная стрелка вправо,
                                     U+21D2 ISOtech -->
<!-- В Unicode не говорится, что rArr и стрелка 'импликации' -
    одно и то же, но для этой функции не имеется специального символа. Поэтому для
    'импликации' может использовать rArr в соответствии с ISOtech -->
<!ENTITY dArr     CDATA "&#8659;" -- двойная стрелка вниз, U+21D3 ISOamsa -->
<!ENTITY hArr     CDATA "&#8660;" -- двойная стрелка влево-вправо,
                                     U+21D4 ISOamsa -->

<!-- Математические операторы -->
<!ENTITY forall   CDATA "&#8704;" -- для всех, U+2200 ISOtech -->
<!ENTITY part     CDATA "&#8706;" -- частичный дифференциал, U+2202 ISOtech  -->
<!ENTITY exist    CDATA "&#8707;" -- существует, U+2203 ISOtech -->
<!ENTITY empty    CDATA "&#8709;" -- пустое множество = нулевое множество = диаметр,
                                     U+2205 ISOamso -->
<!ENTITY nabla    CDATA "&#8711;" -- набла = левая разность,
                                     U+2207 ISOtech -->
<!ENTITY isin     CDATA "&#8712;" -- входит, U+2208 ISOtech -->
<!ENTITY notin    CDATA "&#8713;" -- не входит, U+2209 ISOtech -->
<!ENTITY ni       CDATA "&#8715;" -- содержит, U+220B ISOtech -->
<!-- нужно ли другое, боле езапоминающееся название? -->
<!ENTITY prod     CDATA "&#8719;" -- n-арное произведение = знак произведения,
                                     U+220F ISOamsb -->
<!-- prod и U+03A0 'греческая заглавная буква pi' - НЕ одно и то же, хотя
     для их представления используется один и тот же знак -->
<!ENTITY sum      CDATA "&#8721;" -- n-арное суммироание, U+2211 ISOamsb -->
<!-- sum и U+03A3 'греческая заглавная буква sigma' - НЕ одно и то же, хотя
     для их представления используется один и тот же знак -->
<!ENTITY minus    CDATA "&#8722;" -- знак минус, U+2212 ISOtech -->
<!ENTITY lowast   CDATA "&#8727;" -- оператор звездочка, U+2217 ISOtech -->
<!ENTITY radic    CDATA "&#8730;" -- квадратный корень = знак радикала,
                                     U+221A ISOtech -->
<!ENTITY prop     CDATA "&#8733;" -- пропорционально, U+221D ISOtech -->
<!ENTITY infin    CDATA "&#8734;" -- бесконечность, U+221E ISOtech -->
<!ENTITY ang      CDATA "&#8736;" -- угол, U+2220 ISOamso -->
<!ENTITY and      CDATA "&#8743;" -- логическое И, U+2227 ISOtech -->
<!ENTITY or       CDATA "&#8744;" -- логическое ИЛИ, U+2228 ISOtech -->
<!ENTITY cap      CDATA "&#8745;" -- пересечение, U+2229 ISOtech -->
<!ENTITY cup      CDATA "&#8746;" -- объединение, U+222A ISOtech -->
<!ENTITY int      CDATA "&#8747;" -- интеграл, U+222B ISOtech -->
<!ENTITY there4   CDATA "&#8756;" -- следовательно, U+2234 ISOtech -->
<!ENTITY sim      CDATA "&#8764;" -- оператор тильда = приблизительно равно,
                                     U+223C ISOtech -->
<!-- оператор тильда и тильда, U+007E, - это НЕ один и тот же символ,
     хлтя для их представления может использоваться один и тот же знак -->
<!ENTITY cong     CDATA "&#8773;" -- приблизительно равно, U+2245 ISOtech -->
<!ENTITY asymp    CDATA "&#8776;" -- почти равно = асимптотически равно,
                                     U+2248 ISOamsr -->
<!ENTITY ne       CDATA "&#8800;" -- не равно, U+2260 ISOtech -->
<!ENTITY equiv    CDATA "&#8801;" -- совпадает с, U+2261 ISOtech -->
<!ENTITY le       CDATA "&#8804;" -- меньше или равно, U+2264 ISOtech -->
<!ENTITY ge       CDATA "&#8805;" -- больше или равно,
                                     U+2265 ISOtech -->
<!ENTITY sub      CDATA "&#8834;" -- является подмножеством, U+2282 ISOtech -->
<!ENTITY sup      CDATA "&#8835;" -- является надмножеством, U+2283 ISOtech -->
<!-- обратите внимание, что знак nsup, 'не является надмножеством, U+2283'
     не включен в шрифт Symbol и не включен сюда. Нужно ли это, для симметрии?
     Это ISOamsn  -->
<!ENTITY nsub     CDATA "&#8836;" -- не является подмножеством, U+2284 ISOamsn -->
<!ENTITY sube     CDATA "&#8838;" -- является подмножеством или совпадает, U+2286 ISOtech -->
<!ENTITY supe     CDATA "&#8839;" -- является надмножеством или совпадает,
                                     U+2287 ISOtech -->
<!ENTITY oplus    CDATA "&#8853;" -- плюс в кружке = прямая сумма,
                                     U+2295 ISOamsb -->
<!ENTITY otimes   CDATA "&#8855;" -- оператор умножения в кружке = произведение векторов,
                                     U+2297 ISOamsb -->
<!ENTITY perp     CDATA "&#8869;" -- перпендикулярно,
                                     U+22A5 ISOtech -->
<!ENTITY sdot     CDATA "&#8901;" -- оператор точка, U+22C5 ISOamsb -->
<!-- оператор точка и средняя точка, U+00B7, - НЕ одно и то же -->

<!-- Прочие технические символы -->
<!ENTITY lceil    CDATA "&#8968;" -- левый верхний предел,
                                     U+2308 ISOamsc  -->
<!ENTITY rceil    CDATA "&#8969;" -- правый верхний предел, U+2309 ISOamsc  -->
<!ENTITY lfloor   CDATA "&#8970;" -- левый нижний предел,
                                     U+230A ISOamsc  -->
<!ENTITY rfloor   CDATA "&#8971;" -- правй нижний предел, U+230B ISOamsc  -->
<!ENTITY lang     CDATA "&#9001;" -- левая угловая скобка,
                                     U+2329 ISOtech -->
<!-- lang и U+003C 'меньше' или U+2039 'левая одинарная угловая кавычка' -
     это НЕ одни и те же символы -->
<!ENTITY rang     CDATA "&#9002;" -- правая угловая скобка,
                                     U+232A ISOtech -->
<!-- rang и символ U+003E 'больше' или U+203A 'правая одинарная угловая кавычка'
     - НЕ одно и то же -->

<!-- Геометрические формы -->
<!ENTITY loz      CDATA "&#9674;" -- ромб, U+25CA ISOpub -->

<!-- Прочие символы -->
<!ENTITY spades   CDATA "&#9824;" -- черные пики, U+2660 ISOpub -->
<!-- 'черный' здесь означает 'заполненный, непустой' -->
<!ENTITY clubs    CDATA "&#9827;" -- черные трефы,
                                     U+2663 ISOpub -->
<!ENTITY hearts   CDATA "&#9829;" -- черные червы,
                                     U+2665 ISOpub -->
<!ENTITY diams    CDATA "&#9830;" -- черные бубны, U+2666 ISOpub -->

24.4 Ссылки на значимые для разметки символы и символы интернационализации

В этом разделе перечислены ссылки на символы для обозначения значимых для разметки символов (те же, что и в HTML 2.0 и 3.2) для обозначения пробелов и тире. Другие символы в этом разделе относятся к вопросам интернационализации, таким как однозначность двунаправленного текста (см. раздел о двунаправленном тексте).

Кроме того, добавлены комбинации для других символов кодировки CP-1252, не входящих в наборы HTMLlat1 или HTMLsymbol. Все они находятся в диапазоне от 128 до 159 в наборе cp-1252. Эти объекты позволяют определять символы независимо от платформы.

Для поддержки этих объектов агенты пользователей могут поддерживать весь [ISO10646] или использовать другие средства. Отображение знаков для этих символов может достигаться за счет возможности отображения соответствующих символов [ISO10646] другими средствами, например, за счет внутреннего отображения перечисленных объектов, числовых ссылок на символы и символов в соответствующие позиуии в каком-либо шрифте, содержащем необходимые знаки.

24.4.1 Список символов

<!-- Специальные символы для HTML -->

<!-- Набор символов. Типичный вызов:
     <!ENTITY % HTMLspecial PUBLIC
       "-//W3C//ENTITIES Special//EN//HTML">
     %HTMLspecial; -->

<!-- Частичное © Международная организация по стандартизации 1986
     Разрешение на копирование в любой форме дается для использования с
     соответствующими системами и приложениями SGML в соответствии со стандартом
     ISO 8879 при условии, что данное замечание включено во все копии.
-->

<!-- Если имена не являются новыми, дается соответствующий объект ISO.
     Новые имена (не входящие в список ISO 8879) не конфликтуют
     с существующими именами объектов ISO 8879. Номера ISO 10646
     даются для каждого символа в шестнадцатеричном формате. Значения CDATA
     являются десятичным выражением значений ISO 10646 и относятся к набору
     символов документа. Имена являются именами Unicode 2.0.

-->

<!-- Управляющие элементы C0 и Basic Latin -->
<!ENTITY quot    CDATA "&#34;"   -- кавычка,
                                    U+0022 ISOnum -->
<!ENTITY amp     CDATA "&#38;"   -- амперсанд, U+0026 ISOnum -->
<!ENTITY lt      CDATA "&#60;"   -- знак меньше, U+003C ISOnum -->
<!ENTITY gt      CDATA "&#62;"   -- знак больше, U+003E ISOnum -->

<!-- Latin Extended-A -->
<!ENTITY OElig   CDATA "&#338;"  -- латинский заглавный символ OE,
                                    U+0152 ISOlat2 -->
<!ENTITY oelig   CDATA "&#339;"  -- латинский строчный символ oe, U+0153 ISOlat2 -->
<!-- в некоторых языка это отдельный символ -->
<!ENTITY Scaron  CDATA "&#352;"  -- заглавная латинская буква S с кароном,
                                    U+0160 ISOlat2 -->
<!ENTITY scaron  CDATA "&#353;"  -- строчная латинская буква s с кароном,
                                    U+0161 ISOlat2 -->
<!ENTITY Yuml    CDATA "&#376;"  -- заглавная латинская буква Y с тремой,
                                    U+0178 ISOlat2 -->

<!-- Символы изменения -->
<!ENTITY circ    CDATA "&#710;"  -- ударение циркумфлекс,
                                    U+02C6 ISOpub -->
<!ENTITY tilde   CDATA "&#732;"  -- малая тильда, U+02DC ISOdia -->

<!-- Общая пунктуация -->
<!ENTITY ensp    CDATA "&#8194;" -- en space, U+2002 ISOpub -->
<!ENTITY emsp    CDATA "&#8195;" -- em space, U+2003 ISOpub -->
<!ENTITY thinsp  CDATA "&#8201;" -- узкий пробел, U+2009 ISOpub -->
<!ENTITY zwnj    CDATA "&#8204;" -- zero width non-joiner,
                                    U+200C NEW RFC 2070 -->
<!ENTITY zwj     CDATA "&#8205;" -- zero width joiner, U+200D NEW RFC 2070 -->
<!ENTITY lrm     CDATA "&#8206;" -- left-to-right mark, U+200E NEW RFC 2070 -->
<!ENTITY rlm     CDATA "&#8207;" -- right-to-left mark, U+200F NEW RFC 2070 -->
<!ENTITY ndash   CDATA "&#8211;" -- en dash, U+2013 ISOpub -->
<!ENTITY mdash   CDATA "&#8212;" -- em dash, U+2014 ISOpub -->
<!ENTITY lsquo   CDATA "&#8216;" -- левая одинарная кавычка,
                                    U+2018 ISOnum -->
<!ENTITY rsquo   CDATA "&#8217;" -- правая одинарная кавычка,
                                    U+2019 ISOnum -->
<!ENTITY sbquo   CDATA "&#8218;" -- одинарная кавычка low-9, U+201A NEW -->
<!ENTITY ldquo   CDATA "&#8220;" -- левая двойная кавычка,
                                    U+201C ISOnum -->
<!ENTITY rdquo   CDATA "&#8221;" -- правая двойная кавычка,
                                    U+201D ISOnum -->
<!ENTITY bdquo   CDATA "&#8222;" -- двойная кавычка low-9, U+201E NEW -->
<!ENTITY dagger  CDATA "&#8224;" -- крестик, U+2020 ISOpub -->
<!ENTITY Dagger  CDATA "&#8225;" -- двойной крестик, U+2021 ISOpub -->
<!ENTITY permil  CDATA "&#8240;" -- знак на тысячу, U+2030 ISOtech -->
<!ENTITY lsaquo  CDATA "&#8249;" -- одинарная левая угловая кавычка,
                                    U+2039 ISO proposed -->
<!-- Символ lsaquo предложен, но еще не стандартизован ISO -->
<!ENTITY rsaquo  CDATA "&#8250;" -- одинарная правая угловая кавычка,
                                    U+203A ISO proposed -->
<!-- Символ rsaquo предложен, но еще не стандартизован ISO -->
<!ENTITY euro   CDATA "&#8364;"  -- знак евро, U+20AC NEW -->


Формы в документах HTML

17 Формы

  1. Введение в формы
  2. Управляющие элементы
    1. Типы управляющих элементов
  3. Элемент FORM
  4. Элемент INPUT
    1. Типы управляющих элементов, создаваемые с помощью элемента INPUT
    2. Примеры форм с управляющими элементами типа INPUT
  5. Элемент BUTTON
  6. Элементы SELECT, OPTGROUP и OPTION
    1. Заранее выбранные варианты
  7. Элемент TEXTAREA
  8. Элемент ISINDEX
  9. Метки
    1. Элемент LABEL
  10. Добавление в формы структуры: элементы FIELDSET и LEGEND
  11. Переход фокуса на элемент
    1. Переход с помощью клавиши Tab
    2. Клавиши доступа
  12. Отключенные управляющие элементы и элементы только для чтения
    1. Отключенные управляющие элементы
    2. Управляющие элементы только для чтения
  13. Отправка формы
    1. Метод отправки формы
    2. Успешные управляющие элементы
    3. Обработка данных формы
      • Первый шаг: определение успешных управляющих элементов
      • Второй шаг: построение набора данных формы
      • Третий шаг: кодирование набора данных формы
      • Четвертый шаг: передача закодированного набора данных формы
    4. Типы содержимого формы
      • application/x-www-form-urlencoded
      • multipart/form-data

17.1 Введение в формы

Форма HTML - это раздел документа, в котором содержатся обычная информация, разметка и специальные элементы, называемые управляющими элементам (флажки, кнопки с зависимой фиксацией, меню и т.д.), а также метки этих управляющих элементов. Обычно пользователи "заполняют" форму, модифицируя управляющие элементы (вводя текст, выбирая пункты меню и т.д.) перед тем, как предоставить форму агентц пользователя для обработки (например, на Web-серввер, на почтовый сервер и т.д.)

Вот простая форма, включающая метки, кнопки с зависимой фиксацией и кнопки (очистка формы или отправка):

 <FORM action="http://somesite.com/prog/adduser" method="post">
    <P>
    <LABEL for="firstname">Имя: </LABEL>
              <INPUT type="text" id="firstname"><BR>
    <LABEL for="lastname">Фамилия: </LABEL>
              <INPUT type="text" id="lastname"><BR>
    <LABEL for="email">Адрес электронной почты: </LABEL>
              <INPUT type="text" id="email"><BR>
    <INPUT type="radio" name="sex" value="Male"> Мужской<BR>
    <INPUT type="radio" name="sex" value="Female"> Женский<BR>
    <INPUT type="submit" value="Отправить"> <INPUT type="reset">
    </P>
 </FORM>

Примечание. В данной спецификации имеется более подробная информация о формах в подразделах о проблемах отображения форм.

17.2 Управляющие элементы

Пользователи взаимодействуют с формами с помощью именованных управляющих элементов.

"Имя элемента" задается атрибутом name. Областью действия атрибута name для управляющего элемента в элементе FORM является элемент FORM.

Каждый управляющий элемент имеет начальное и текущее значение, оба они являются символьными строками. Информацию о начальных значениях и возможных ограничениях на значения см. в определении управляющего элемента. В общем случае "исходное значение" управляющего элемента может задаваться с помощью атрибута value. Однако исходное значение элемента TEXTAREA задается его содержимым, а исходное значение элемента OBJECT в форме определяется реализацией объекта (т.е лежит вне области, рассматриваемой в данной спецификации).

"Текущее значение" управляющего элемента сначала устанавливается равным начальному значению. Затем текущее значение может изменяться пользователем или скриптами.

Начальное значение управляющего элемента не изменяется. Таким образом при сбросе формы каждое текущее значение устанавливается равным начальному значению. Если управляющий элемент не имеет начального значения, результат сброса формы непредсказуем.

Когда форма предоставляется для обработки, с формой передаются пары управляющий элемент-текущее значение. Передаваемые пары имя/значение называются успешными управляющими элементами.

17.2.1 Типы управляющих элементов

В HTML определены следующие типы управляющих элементов:

кнопки
Авторы могут создавать три типа кнопок:
  • кнопки отправки: При активизации такой кнопки производится отправка формы. В форме может быть несколько кнопок отправки.
  • кнопки сброса: При активизации такой кнопки для всех управляющих элементов устанавливаются исходные значения.
  • прочие кнопки: Для таких кнопок действие по умолчанию не определено. С атрибутами событий каждой такой кнопки могут быть связаны клиентские скрипты. Если происхходит событие (например, пользователль нажимает кнопку, отпускает ее и т.д.), включается связанный с событием скрипт.

    Авторы должны определять язык скрипта для кнопок в объявлении скрипта по умолчанию (в элементе META).

Авторы создают кнопки с помощью элемента BUTTON или INPUT. Подробнее об определении различных типов кнопок см. в определении этих элементов.

Примечание. Авторам следует обратить внимание на то, что элемент BUTTON предоставляет более широкие возможности представления кнопки, чем элемент INPUT.

флажки
Флажки (и кнопки с зависимой фиксацией) - это переключатели вкл./выкл., которые могут переключаться пользователем. Переключатель "включен", если для управляющего элемента установлен атрибут selected.

При отправке формы успешными могут стать только включенные переключатели. Несколько флажков в форме могут иметь одно и то же имя управляющего элемента. Таким образом, например, флажки позволяют пользователям выбрать несколько значений для одного и того же свойства. Для создания флажков используется элемент INPUT.

кнопки с зависимой фиксацией
Кнопки с зависимой фиксацией похожи на флажки за исключением того, что, если несколько кнопок используют одно и то же имя управляющего элемента, они являются взаимоисключающими: если одна кнопка включена, другие обязательно выключены. Для создания кнопок с зависимой фиксацией используется элемент INPUT.
меню
Предоставляют пользователям варианты на выбор. Меню создается с помощью элемента SELECT, а также элементов OPTGROUP и OPTION.
текстовый ввод
Для ввода текста пользователем авторы могут создавать управляющие элементы двух типов. Элемент INPUT создает управляющий элемент для ввода текста из одной строки, а элемент TEXTAREA - элемент для ввода текста из нескольких строк. В обоих случаях вводимый текст становится текущим значением управляющего элемента.
выбор файлов
Управляющие элементы этого типа позволяют пользователям выбирать файлы, содержимое которых может передаваться вместе с формой. Для создания этого управляющего элемента используется элемент INPUT.
скрытые управляющие элементы
Авторы могут создавать управляющие элементы, не представляемые пользователям, но имеющие значения, которые передаются с формой. Обычно они используются для хранения информации между обменом клиент/сервер, которая в противном случае могла бы пропасть вследствие stateless природы протокола HTTP (см. [RFC2068]). Для создания скрытого управляющего элемента используется элемент INPUT.
объекты
Авторы могут помещать в формы общие объекты, так что связанные с ними значения будут передаваться с другими управляющими элементами. Для создания таких управляющих элементов используется элемент OBJECT.

Элементы, используемые для создания управляющих элементов, обычно располагаются в элементе FORM, но могут находиться и за пределами объявления FORM, если они используются для построения интерфейса пользователя. Это обсуждается в разделе о внутренних событиях. Обратите внимание, что управляющие элементы за пределами формы не могут быть успешными.

17.3 Элемент FORM

<!ELEMENT FORM - - (%block;|SCRIPT)+ -(FORM) -- интерактивная форма -->
<!ATTLIST FORM
  %attrs;                              -- %coreattrs, %i18n, %events --
  action      %URI;          #REQUIRED -- обработчик формы на сервере --
  method      (GET|POST)     GET       -- метод HTTP, используемый для отправки формы--
  enctype     %ContentType;  "application/x-www-form-urlencoded"
  onsubmit    %Script;       #IMPLIED  -- форма отправлена --
  onreset     %Script;       #IMPLIED  -- форма сброшена --
  accept-charset %Charsets;  #IMPLIED  -- список поддерживаемых наборов символов --
  >

Начальный тег: обязателен, Конечный тег: обязателен

Определения атрибутов

action = uri [CT]
Задает агента для обработки формы. Например, значением может быть URI HTTP (для передачи формы в программу) или mailto URI (для отправки формы по электронной почте).
method = get|post [CI]
Определяет метод HTTP, используемый для передачи набора данных формы. Возможные значения (с учетом регистра) - "get" (по умолчанию) и "post". Подробнее см. в разделе об отправке формы.
enctype = content-type [CI]
Этот атрибут задает тип содержимого, используемый для отправки формы на сервер (если для метода используется значение "post"). По умолчанию для этого атрибута используется значение "application/x-www-form-urlencoded". С элементом INPUT, type="file" должно использоваться значение "multipart/form-data".
accept-charset = список наборов символов [CI]
Этот атрибут задает список кодировок символов для ввода данных, которые должны приниматься обрабатывающим эту форму сервером. Значением является разделенный пробелами и/или запятыми список значений charset. Сервер должен интерпретировать этот список как список исключающих или, то есть он должен принимать любую кодировку для загруженного объекта.

По умолчанию значением этого атрибута является зарезервированная строка "UNKNOWN". Агенты пользователей могут интерпретировать это значение как кодировку символов, используемую для передачи документа, содержащего этот элемент FORM.

accept = content-type-list [CI]
Этот атрибут определяет разделенным запятыми список типов содержимого, которые должен корректно обрабатывать сервер, обрабатывающий форму. Агенты пользователей могут использовать эту информацию для отфильтровывания отвечающих спецификации файлов при предложении пользователю выбора файлов для отправки на сервере (если в элементе INPUT указано type="file").

Атрибуты, определяемые в другом месте

  • id, class (идентификаторы в пределах документа)
  • lang (информация о языке), dir (направление текста)
  • style (встроенная информация о стиле)
  • title (заголовок элемента)
  • target (target frame information)
  • onsubmit, onreset, onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события)

Элемент FORM служит контейнеров для управляющих элементов. Он определяет:

  • Макет формы (дается содержимым элемента).
  • Программу, которая будет обрабатывать заполенную и переданную форму (атрибут action). Получающая форму программа должна иметь возможность определения пар имя/значение, чтобы их использовать.
  • Метод отправки данных на сервер (атрибут method).
  • Кодировку символов, которая должна приниматься сервером для обработки этой формы (атрибут accept-charset). Агенты пользователей могут рекомендовать пользователю значение атрибута accept-charset и/или не позволять пользователям вводить нераспознаваемые символы.

Форма помимо управляющих элементов может содержать текст и разметку (абзацы, списки и т.д.).

В следующем примере показана форма, которая должна обрабатываться программой "adduser". Эта форма будет отправляться с использованием метода HTTP "post".

 <FORM action="http://somesite.com/prog/adduser" method="post">
 ...содержимое формы...
 </FORM>

В следующем примере показана отправка формы на адрес электронной почты:

 <FORM action="mailto:Kligor.T@gee.whiz.com" method="post">
 ...содержимое формы...
 </FORM>

Информацию о том, как агенты пользователя должны подготавливать данные формы для серверов и как они должны обрабатывать ответы от сервера Вы можете найти в разделе об отправке формы.

Примечание. Дальнейшее обсуждение поведения серверов, принимающих данные формы, лежит вне области, рассматриваемой в данной спецификации.

17.4 Элемент INPUT

<!ENTITY % InputType
  "(TEXT | PASSWORD | CHECKBOX |
    RADIO | SUBMIT | RESET |
    FILE | HIDDEN | IMAGE | BUTTON)"
   >

<!-- атрибут является обязательным для всех типов, кроме submit и reset -->
<!ELEMENT INPUT - O EMPTY              -- управляющий элемент формы -->
<!ATTLIST INPUT
  %attrs;                              -- %coreattrs, %i18n, %events --
  type        %InputType;    TEXT      -- тип вводимой информации --
  name        CDATA          #IMPLIED  -- передать как часть формы --
  value       CDATA          #IMPLIED  -- обязателен для кнопок с зависимой фиксацией и флажков --
  checked     (установлен)   #IMPLIED  -- для кнопок с зависимой фиксацией и флажков --
  disabled    (отключен)     #IMPLIED  -- в данном контексте недоступен --
  readonly    (только чтение)#IMPLIED  -- для текста и паролей --
  size        CDATA          #IMPLIED  -- зависит от типа поля --
  maxlength   NUMBER         #IMPLIED  -- максимальное число символов в текстовом поле --
  src         %URI;          #IMPLIED  -- для полей с изображениями --
  alt         CDATA          #IMPLIED  -- краткое описание --
  usemap      %URI;          #IMPLIED  -- использовать клиентскую навигационную карту --
  tabindex    NUMBER         #IMPLIED  -- позиция в последовательности перехода --
  accesskey   %Character;    #IMPLIED  -- клавиша доступа --
  onfocus     %Script;       #IMPLIED  -- фокус на этом элементе --
  onblur      %Script;       #IMPLIED  -- фокус перемещен на другой элемент --
  onselect    %Script;       #IMPLIED  -- выделен некоторые текст --
  onchange    %Script;       #IMPLIED  -- значение элемента изменено --
  accept      %ContentTypes; #IMPLIED  -- список типов MIME для загрузки файлов --
  >

Начальный тег: обязателен, Конечный тег: запрещен

Определения атрибутов

type = text|password|checkbox|radio|submit|reset|file|hidden|image|button [CI]
Определяет тип управляющего элемента. По умолчанию используется значение "text".
name = cdata [CI]
Определяет имя управляющего элемента.
value = cdata [CA]
Определяет начальное значение управляющего элемента. Этот атрибут не обязателен, если только для атрибута type не установлено значение "radio".
size = cdata [CN]
Сообщает агенту пользователя начальную ширину управляющего элемента. Ширина дается в пикселах, если для атрибута type не установлено значение "text" или "password". В этом случае ширина задается в числе символов (число должно быть целым).
maxlength = число [CN]
Если для атрибута type установлено значение "text" или "password", этот атрибут определяет максимальное число символов, вводимых пользователем. Это число может превышать указанный в атрибуте size размер поля; в этом случае агент пользователя должен обеспечивать механизм прокрутки. По умолчанию число символов не ограничено.
checked [CI]
Если для атрибута type установлено значение "radio" или "checkbox", этот логический атрибут указывает, что флажок установлен. Агенты пользователей должны игнорировать этот атрибут для других типов управляющих элементов.
src = uri [CT]
Если атрибут type имеет значение "image", этот атрибут определяет местоположение изображения, используемое для представления графической кнопки.

Атрибуты, определяемые в другом месте

  • id, class (идентификаторы в пределах документа)
  • lang (информация о языке), dir (направление текста)
  • title (заголовок элемента)
  • style (встроенная информация о стиле)
  • alt (альтернативный текст)
  • align (выравнивание)
  • accept (допустимые типы содержимого для сервера)
  • readonly (управляющие элеметы ввода только для чтения)
  • disabled (отключенные управляющие элементы ввода)
  • tabindex (переход по нажатию клавиши tab)
  • accesskey (клавиши доступа)
  • usemap (клиентские изображения-карты)
  • onfocus, onblur, onselect, onchange, onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события)

17.4.1 Типы управляющих элементов, создаваемые с помощью элемента INPUT

Тип управляющего элемента, определяемый элементом INPUT, зависит от значения атрибута type:

text
Создает элемент для ввода текста из одной строки.
password
Аналогичен значению "text", но вводимый текст представляется таким образом, чтобы не отображать символы (например, в виде ряда звездочек). Этот управляющий элемент часто используется для ввода паролей. Обратите внимание, что текущим значением является текст, введенный пользователем, а не текст, представляемый агентом пользователя.

Примечание. Разработчикам приложений следует обратить внимание на то, что этот механизм обеспечивает только слабую защиту. Хотя пароль маскируется агентом пользователя от случайных наблюдателей, он передается на сервер в виде открытого текста, и его может прочесть любой пользователь, имеющий доступ к сети на низком уровне.

checkbox
Создает флажок.
radio
Создает кнопку с зависимой фиксацией.
submit
Создает кнопку отправки.
image
Создает графическую кнопку отправки. Значение атрибута src задает URI изображения, используемого для представления кнопки. Из соображений доступности авторам следует предусматривать альтернативный текст для изображения с помощью атрибута alt.

Если для щелчка на изображении используется указующее устройство, на сервер передаются форма и координаты щелчка. Значение x измеряется в пикселах от левой границы изображения, а значение y - в пикселах от верхней границы изображения. В передаваемые данные включаются последовательности имя.x=значение-x и name.y=значение-y, где "имя" - значение атрибута name, а значение-x и значение-y - значения координат x и y соответственно.

Если сервер предпринимает различные действия в зависимости от места щелчка, пользователи неграфических браузеров не смогут воспользоваться этим свойством. По этой причине авторам следует предусматривать альтернативные подходы:

  • Использовать несколько кнопок отправки (каждая с отдельным изображением) вместо одной графической кнопки. Можно использовать для управления местоположением этих кнопок таблицы стилей.
  • Использовать клиентские изображения-карты и скрипты.
reset
Создает кнопку сброса.
button
Создает другую кнопку. Агенты пользователей должны использовать в качестве метки на кнопке значение атрибута value.
hidden
Создает невидимый управляющий элемент.
file
Создает управляющий элемент выбор файла. Агенты пользователей могут использовать значение атрибута value в качестве исходного имени файла.

17.4.2 Примеры форм с управляющими элементами типа INPUT

В следующем фрагменте кода HTML определяется простая форма, позволяющая пользователям вводить имя, фамилию, адрес электронной почты и пол. В случае активизации кнопки отправки форма передается программе, указанной в атрибуте action.

 <FORM action="http://somesite.com/prog/adduser" method="post">
    <P>
    Имя: <INPUT type="text" name="firstname"><BR>
    Фамилия: <INPUT type="text" name="lastname"><BR>
    email: <INPUT type="text" name="email"><BR>
    <INPUT type="radio" name="sex" value="Male"> Мужской<BR>
    <INPUT type="radio" name="sex" value="Female"> Женский<BR>
    <INPUT type="submit" value="Отправить"> <INPUT type="reset">
    </P>
 </FORM>

Эта форма может представляться следующим образом:

Пример представления формы.

В разделе об элементе LABEL мы обсудим разметку меток типа "First name".

В следующем примере в случае события "onclick" включается функция JavaScript с именем verify:

<HEAD>
<META http-equiv="Content-Script-Type" content="text/javascript">
</HEAD>
<BODY>
 <FORM action="..." method="post">
    <P>
    <INPUT type="button" value="Нажми тут" onclick="verify()">
 </FORM>
</BODY>

Подробнее о скриптах и событиях Вы можете узнать в разделе о внутренних событиях.

В следующем примере показано, как содержимое указанного пользователем файла -может передаваться вместе с формой. У пользователя запрашивается имя и список имен файлов, содержимое которых должно передаваться с формой. С помощью указания значение enctype для "multipart/form-data" содержимое всех файлов будет упаковываться для передачи в отдельные разделы существующего документа.

<FORM action="http://server.dom/cgi/handle"
    enctype="multipart/form-data"
    method="post">
 <P>
 Как Вас зовут? <INPUT type="text" name="name_of_sender">
 Какие файлы Вы отправляете? <INPUT type="file" name="name_of_files">
 </P>
</FORM>

17.5 Элемент BUTTON

<!ELEMENT BUTTON - -
     (%flow;)* -(A|%formctrl;|FORM|FIELDSET)
     -- кнопка -->
<!ATTLIST BUTTON
  %attrs;                              -- %coreattrs, %i18n, %events --
  name        CDATA          #IMPLIED
  value       CDATA          #IMPLIED  -- передается на сервер при отправке --
  type        (button|submit|reset) submit - для использования в качестве кнопки в форме --
  disabled    (disabled)     #IMPLIED  -- в данном контексте недоступно --
  tabindex    NUMBER         #IMPLIED  -- положение в последовательности перехода--
  accesskey   %Character;    #IMPLIED  -- клавиша доступа --
  onfocus     %Script;       #IMPLIED  -- фокус на элементе --
  onblur      %Script;       #IMPLIED  -- фокус перемещен на другой элемент --
  >

Начальный тег: обязателен, Конечный тег: обязателен

Определения атрибутов

name = cdata [CI]
Определяет имя управляющего элемента.
value = cdata [CS]
Определяет начальное значение кнопки.
type = submit|button|reset [CI]
Объявляет тип кнопки. Возможные значения:
  • submit: Создает кнопку отправки. Это значение используется по умолчанию.
  • reset: Создает кнопку сброса.
  • button: Создает другую кнопку.

Атрибуты, определяемые в другом месте

  • disabled (отключенные управляющие элементы ввода)
  • accesskey (клавиши доступа)
  • usemap (клиентские изображения-карты)
  • onfocus, onblur, onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события)

Кнопки, создаваемые с помощью элемента BUTTON, действуют так же, как и кнопки, создаваемые с помощью элемента INPUT, но они обеспечивают более богатые возможности представления: элемент BUTTON может иметь содержимое. Например, элемент BUTTON, содержащий изображение, действует и может resemble подобно элементу INPUT, для атрибута type которого установлено значение "image", но тип элемента BUTTON может иметь содержимое content.

Визуальные агенты пользователей могут представлять кнопки BUTTON рельефно или с эффектом нажатия при щелчке мыши, в то время как кнопки INPUT могут представляться только как "плоские" изображения.

В следующем примере предыдущий пример расширяется, и кнопки отправки и сброса создаются с помощью элемента BUTTON вместо элемента INPUT. Используемое для кнопок изображение определяется элементом IMG.

 <FORM action="http://somesite.com/prog/adduser" method="post">
    <P>
    Имя: <INPUT type="text" name="firstname"><BR>
    Фамилия: <INPUT type="text" name="lastname"><BR>
    email: <INPUT type="text" name="email"><BR>
    <INPUT type="radio" name="sex" value="Male"> Мужской<BR>
    <INPUT type="radio" name="sex" value="Female"> Женский<BR>
    <BUTTON name="submit" value="Отправить" type="submit">
    Send<IMG src="/icons/wow.gif" alt="Ого"></BUTTON>
    <BUTTON name="reset" type="reset">
    Reset<IMG src="/icons/oops.gif" alt="ой"></BUTTON>
    </P>
 </FORM>

Помните, что авторам следует предусматривать альтернативный текст для элемента IMG.

Не допускается связывать изображение-карту с элементом IMG, содержащимя в элементе BUTTON element.

ПРИМЕР НЕДОПУСТИМОГО ИСПОЛЬЗОВАНИЯ:
В следующем примере представлен недопустимый код HTML.

<BUTTON>
<IMG src="foo.gif" usemap="...">
</BUTTON>

17.6 Элементы SELECT, OPTGROUP и OPTION

<!ELEMENT SELECT - - (OPTGROUP|OPTION)+ -- option selector -->
<!ATTLIST SELECT
  %attrs;                              -- %coreattrs, %i18n, %events --
  name        CDATA          #IMPLIED  -- имя поля --
  size        NUMBER         #IMPLIED  -- число видимых строк --
  multiple    (multiple)     #IMPLIED  -- по умолчанию используется одно выделение --
  disabled    (disabled)     #IMPLIED  -- недоступно в данном контексте --
  tabindex    NUMBER         #IMPLIED  -- позиция в последовательности перехода --
  onfocus     %Script;       #IMPLIED  -- фокус перешел на элемент --
  onblur      %Script;       #IMPLIED  -- фокус ушел с элемента --
  onchange    %Script;       #IMPLIED  -- значение элемента изменилось --
  >

Начальный тег: обязателен, Конечный тег: обязателен

Определения атрибутов элемента SELECT

name = cdata [CI]
Определяет имя управляющего элемента.
size = number [CN]
Если элемент SELECT представлен в виде списка с возможностью прокрутки, этот атрибут определяет число строк в списке, видимых в один момент времени. Визуальные агенты пользователей не обязательно должны представлять элемент SELECT в виде списка; они могут использовать другие механизмы - например, выпадающие меню.
multiple [CI]
Если этот логический атрибут установлен, он позволяет выбирать несколько пунктов. Если он не установлен, в элементе SELECT можно выбрать только один вариант.

Элемент SELECT создает меню. Каждый вариант пункт меню представляется элементом OPTION. Элемент SELECT должен содержать хотя бы один элемент OPTION.

Элемент OPTGROUP element позволяет авторам логически группировать варианты. Обычно это полезно, если пользователь должен делать выбор в длинном списке вариантов; группы связанных вариантов проще просматривать и запоминать, чем один длинный список вариантов. В HTML 4.0 все элементы OPTGROUP должны задаваться непосредственно в элементе SELECT (т.е. группы не могут быть вложенными).

17.6.1 Заранее выбранные варианты

Варианты могут быть выбраны заранее. Агенты пользователей должны определять, какие варианты выбраны, следующим образом:

  • Если ни для одного элемента OPTION не установлен атрибут selected, ни один вариант заранее не выбран.
  • Если для одного элемента OPTION установлен атрибут selected, этот вариант должен быть выбран зарнее.
  • Если для элемента SELECT установлен атрибут multiple, и для нескольких элементов OPTION установлен атрибут selected, они должны быть выбраны заранее.
  • Считается ошибкой, если для нескольких элементов OPTION установлен атрибуто selected, а для элемента SELECT не установлен атрибут multiple. Агенты пользователей могут по-разному обрабатывать эту ошибку, но не должны заранее выбирать более одного варианта.
<!ELEMENT OPTGROUP - - (OPTION)+ -- группа вариантов -->
<!ATTLIST OPTGROUP
  %attrs;                              -- %coreattrs, %i18n, %events --
  disabled    (disabled)     #IMPLIED  -- недоступно в данном контексте --
  label       %Text;         #REQUIRED - использование в иерархических меню --
  >

Начальный тег: обязателен, Конечный тег: обязателен

Определения атрибутов элемента OPTGROUP

label = text [CS]
Метка группы вариантов.

Атрибуты, определяемые в другом месте

  • id, class (идентификаторы в пределах документа)
  • lang (информация о языке), dir (направление текста)
  • title (заголовок элемента)
  • style (встроенная информация о стиле)
  • disabled (отключенные управляющие элементы ввода)
  • onfocus, onblur, onchange, onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события)

Примечание. Разработчикам рекомендуется иметь в виду, что в будущих версиях HTML механизм группировки может быть расширен для подержки вложенных групп (т.е. элементы OPTGROUP смогут быть вложенными). Это позволит авторам представлять более сложную иерархию вариантов.

<!ELEMENT OPTION - O (#PCDATA)         -- вариант выбора -->
<!ATTLIST OPTION
  %attrs;                              -- %coreattrs, %i18n, %events --
  selected    (selected)     #IMPLIED
  disabled    (disabled)     #IMPLIED  -- недоступно в данном контексте --
  label       %Text;         #IMPLIED  -- используется в иерархических меню --
  value       CDATA          #IMPLIED  -- по умолчанию - содержимое элемента --
  >

Начальный тег: обязателен, Конечный тег: optional

Определения атрибутов элемента OPTION

selected [CI]
Если этот логический атрибут установлен, этот вариант выбран заранее.
value = cdata [CS]
Определяет исходное значение управляющего элемента. Если этот атрибут не установлен, исходное значение устанавливается равным содержимому элемента OPTION.
label = text [CS]
Позволяет авторам определить более короткую метку для варианта, чем содержимое элемента OPTION. Если этот атрибут определен, агенты пользователей должны использовать его значение вместо содержимого элемента OPTION в качестве метки варианта.

Атрибуты, определяемые в другом месте

  • id, class (идентификаторы в пределах документа)
  • lang (информация о языке), dir (направление текста)
  • title (заголовок элемента)
  • style (встроенная информация о стиле)
  • disabled (отключенные управляющие элементы ввода)
  • onfocus, onblur, onchange, onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события)

При представлении пункта меню агенты пользователей должны использовать значение атрибута label элемента OPTION в качестве выбора. Если этот атрибут не определен, агенты пользователей должны использовать содержимое элемента OPTION.

Атрибут label элемента OPTGROUP определяет метку группы вариантов.

В этом примере мы создадим меню, позволяющее пользователю выбрать, какую из семи программ установить. Первая и вторая программы выбраны заранее, но пользователь может отменить их выбор. Остальные программы заранее не выбраны. Атрибут size определяет, что меню должно занимать 4 строки, хотя пользователь и имеет 7 вариантов. Доступ к другим вариантам должен обеспечиваться с помощью механизма прокрутки.

За элементом SELECT следуют кнопки отправки и сброса.

<FORM action="http://somesite.com/prog/component-select" method="post">
   <P>
   <SELECT multiple size="4" name="component-select">
      <OPTION selected value="Component_1_a">Программа_1</OPTION>
      <OPTION selected value="Component_1_b">Программа _2</OPTION>
      <OPTION>Программа _3</OPTION>
      <OPTION>Программа _4</OPTION>
      <OPTION>Программа _5</OPTION>
      <OPTION>Программа _6</OPTION>
      <OPTION>Программа _7</OPTION>
   </SELECT>
   <INPUT type="submit" value="Отправить"><INPUT type="reset">
   </P>
</FORM>

Успешными будут только выбранные варианты (с использованием имени управляющего элемента "component-select"). Обратите внимание, что, если установлено значение атрибута value, оно определяет исходное значение управляющего элемента, в противном случае это будет содержимое элемента.

В этом примере мы используем элемент OPTGROUP для группировки вариантов. Следующая разметка:

<FORM action="http://somesite.com/prog/someprog" method="post">
 <P>
 <SELECT name="ComOS">
     <OPTGROUP label="PortMaster 3">
       <OPTION label="3.7.1" value="pm3_3.7.1">PortMaster 3 и ComOS 3.7.1
       <OPTION label="3.7" value="pm3_3.7">PortMaster 3 и ComOS 3.7
       <OPTION label="3.5" value="pm3_3.5">PortMaster 3 и ComOS 3.5
     </OPTGROUP>
     <OPTGROUP label="PortMaster 2">
       <OPTION label="3.7" value="pm2_3.7">PortMaster 2 и ComOS 3.7
       <OPTION label="3.5" value="pm2_3.5">PortMaster 2 и ComOS 3.5
     </OPTGROUP>
     <OPTGROUP label="IRX">
       <OPTION label="3.7R" value="IRX_3.7R">IRX и ComOS 3.7R
       <OPTION label="3.5R" value="IRX_3.5R">IRX и ComOS 3.5R
     </OPTGROUP>
 </SELECT>
</FORM>

представляет следующую группировку:

  PortMaster 3
      3.7.1
      3.7
      3.5
  PortMaster 2
      3.7
      3.5
  IRX
      3.7R
      3.5R

Визуальные агенты пользователей могут обеспечивать выбор в группах вариантов с помощью иерархических меню или с использованием любого другого механизма, отражающего структуру вариантов.

Графические агенты пользователей могут представлять это следующим образом:

Возможное представление элемента OPTGROUP

Здесь показан элемент SELECT, представленный в виде каскадных меню. В вершине меню представлено выбранное в настоящий момент значение (PortMaster 3, 3.7.1). У пользователя имеется unfurled два каскадных меню, но он еще не выбрал новое значение (PortMaster 2, 3.7). Обратите внимание, что в каждом каскадном меню отображается метка элемента OPTGROUP или OPTION.

17.7 Элемент TEXTAREA

<!ELEMENT TEXTAREA - - (#PCDATA)       -- текстовое поле из нескольких строк -->
<!ATTLIST TEXTAREA
  %attrs;                              -- %coreattrs, %i18n, %events --
  name        CDATA          #IMPLIED
  rows        NUMBER         #REQUIRED
  cols        NUMBER         #REQUIRED
  disabled    (disabled)     #IMPLIED  -- недоступно в данном контексте --
  readonly    (readonly)     #IMPLIED
  tabindex    NUMBER         #IMPLIED  -- позиция в последовательности перехода --
  accesskey   %Character;    #IMPLIED  -- клавиша доступа --
  onfocus     %Script;       #IMPLIED  -- фокус перешел к элементу --
  onblur      %Script;       #IMPLIED  -- фокус переведен на другой элемент --
  onselect    %Script;       #IMPLIED  -- выделен некоторый текст --
  onchange    %Script;       #IMPLIED  -- значение элемента изменилось --
  >

Начальный тег: обязателен, Конечный тег: обязателен

Определения атрибутов

name = cdata [CI]
Имя управляющего элемента.
rows = number [CN]
Число видимых текстовых строк. Пользователи должны иметь возможность вводить большее количество строк, поэтому агенты пользователей должны обеспечивать средства прокрутки этого управляющего элемента, если содержимое уходит за пределы видимой области.
cols = number [CN]
Видимая ширина, выраженная шириной среднего символа. Пользователи должны иметь возможность вводить более длинные строки, поэтому агенты пользователей должны обеспечивать средства прокрутки этого управляющего элемента, если содержимое уходит за пределы видимой области. Агенты пользователей могут разбивать видимые тестовые строки, чтобы длинные строки были видны без прокрутки.

Атрибуты, определяемые в другом месте

  • id, class (идентификаторы в пределах документа)
  • lang (информация о языке), dir (направление текста)
  • title (заголовок элемента)
  • style (встроенная информация о стиле)
  • readonly (элементы ввода только для чтения)
  • disabled (отключенные управляющие элементы ввода)
  • tabindex (переход с помощью клавиши tab)
  • onfocus, onblur, onselect, onchange, onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события)

Элемент TEXTAREA создает управляющий элемент для многострочного ввода текста. Агенты пользователей должны использовать содержимое этго элемента как исходное значение управляющего элемента и представлять этот текст сначала.

В этом примере создается управляющий элемент TEXTAREA в 20 строк и 80 столбцов, в котором изначально имеется две строки текста. За элементом TEXTAREA следуют кнопки отправки и сброса.

<FORM action="http://somesite.com/prog/text-read" method="post">
   <P>
   <TEXTAREA name="thetext" rows="20" cols="80">
   Первая строка исходного текста.
   Вторая строка исходного текста.
   </TEXTAREA>
   <INPUT type="submit" value="Отправить"><INPUT type="reset">
   </P>
</FORM>

Устанвока атрибута readonly позволяет авторам отображать неизменяемый текст в элементе TEXTAREA. В отличие от стандартной разметки текста в документе, при такой разметке значение элемента TEXTAREA передается с формой.

17.8 Элемент ISINDEX

ISINDEX является нежелательным. Этот элемент создает управляющий элемент для ввода текста из одной строки. Авторам следует использовать для создания управляющих элементов для ввода текста элемент INPUT.

Формальное определение см. в Transitional DTD.

Определения атрибутов

prompt = text [CS]
Нежелателен. Задает строку запроса для поля ввода.

Атрибуты, определяемые в другом месте

  • id, class (идентификаторы в пределах документа)
  • lang (информация о языке), dir (направление текста)
  • title (заголовок элемента)
  • style (встроенная информация о стиле)

Элемент ISINDEX создает управляющий элемент для ввода текста из одной строки, в который можно ввести любое число симвлов. Агенты пользователей могут использовать значение атрибута prompt в качестве запроса.

ПРИМЕР НЕЖЕЛАТЕЛЬНОГО ИСПОЛЬЗОВАНИЯ:
Следующее объявление ISINDEX:

<ISINDEX prompt="Введите фразу для поиска: ">

можно переписать с использованием элемента INPUT следующим образом:

<FORM action="..." method="post">
<P>Введите фразу для поиска: <INPUT type="text"></P>
</FORM>

Семантика элемента ISINDEX. В настоящее время семантика элемента ISINDEX точно определена, только если базовый URI для влключающего элемента является URI HTTP. На практике в эту строку можно вводить только символы в кодировке Latin-1, поскольку для URI нет механизма задания другого набора символов.

17.9 Метки

С некоторыми управляющими элементами формы могут автоматически связываться метки (например, с кнопками), с другими элементами метки не связываются (текстовые поля, флажки и кнопки с зависимой фиксацией и меню).

Для управляющих элементов с неявными метками агенты пользователей должны использовать в качестве метки значение атрибута value.

Элемент LABEL используется для задания меток для управляющих элементов, не имеющих неявных меток.

17.9.1 Элемент LABEL

<!ELEMENT LABEL - - (%inline;)* -(LABEL) - текст метки поля формы -->
<!ATTLIST LABEL
  %attrs;                              -- %coreattrs, %i18n, %events --
  for         IDREF          #IMPLIED  -- совпадает со значением ID поля --
  accesskey   %Character;    #IMPLIED  -- клавиша доступа --
  onfocus     %Script;       #IMPLIED  -- фокус перешел к элементу --
  onblur      %Script;       #IMPLIED  -- фокус переведен на другой элемент --
  >

Начальный тег: обязателен, Конечный тег: обязателен

Определения атрибутов

for = idref [CS]
Явно связывает определяемую метку с другим управляющим элементом. Если указано значение этого атрибута, оно должно совпадать со значением атрибута id другого управляющего элемента в этом же документе. Если этот атрибут не указан, определяемая метка связывается с содержимым элемента.

Атрибуты, определяемые в другом месте

  • id, class (идентификаторы в пределах документа)
  • lang (информация о языке), dir (направление текста)
  • title (заголовок элемента)
  • style (встроенная информация о стиле)
  • accesskey (клавиши доступа)
  • tabindex (переход по клавише tab )
  • onfocus, onblur, onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события)

Элемент LABEL может использоваться для прикрепления к управляющим элементам информации. Каждый элемент LABEL связан ровно с одним управляющим элементом формы.

Атрибут for явно связывает метку с другим управляющим элементом: значение атрибута for должно совпадать со значением атрибута id связанного управляющего элемента. С одним и тем же управляющим элементом может быть связано несколько элементов LABEL, если создать несколько ссылок с помощью атрибута for.

В этом примере мы создадим таблицу, которая используется для выравнивания двух элементов для ввода текста и связанные с ними метки. Каждая метка явно связана с одним из полей вода:

<FORM action="..." method="post">
<TABLE>
  <TR>
    <TD><LABEL for="fname">Имя</LABEL>
    <TD><INPUT type="text" name="firstname" id="fname">
  <TR>
    <TD><LABEL for="lname">Фамилия</LABEL>
    <TD><INPUT type="text" name="lastname" id="lname">
</TABLE>
</FORM>

Здесь мы расширим предыдущий пример и включим элементы LABEL.

 <FORM action="http://somesite.com/prog/adduser" method="post">
    <P>
    <LABEL for="firstname">Имя: </LABEL>
              <INPUT type="text" id="firstname"><BR>
    <LABEL for="lastname">Фамилия: </LABEL>
              <INPUT type="text" id="lastname"><BR>
    <LABEL for="email">email: </LABEL>
              <INPUT type="text" id="email"><BR>
    <INPUT type="radio" name="sex" value="Мужской"> Male<BR>
    <INPUT type="radio" name="sex" value="Женский"> Female<BR>
    <INPUT type="submit" value="Отправить"> <INPUT type="reset">
    </P>
 </FORM>

Чтобы неявно связать метку с другим управляющим элементом, этот управляющий элемент должен находиться в элементе LABEL. В таком случае элемент LABEL может содержать только один управляющий элемент. Сама метка может располагаться до или после связанного с ней управляющего элемента.

В этом примере мы неявно связываем две метки с двумя управляющими элементами для ввода текста:

<FORM action="..." method="post">
<P>
<LABEL>
   Имя
   <INPUT type="text" name="firstname">
</LABEL>
<LABEL>
   <INPUT type="text" name="lastname">
   Фамилия
</LABEL>
</P>
</FORM>

Обратите внимание, то такая технология не может использоваться, если таблицы используются для форматирования документов, и метка находится в одной ячейке, а связанный с ней управляющий элемент в другой.

Если на элемент LABEL переходит фокус, то он передается в связанный управляющий элемент. Примеры см. ниже в разделе о клавишах доступа.

Метки могут представляться агентами пользователей несколькими способами (например, визуально, прочитываться синтезаторами речи и т.д.)

17.10 Добавление в формы структуры: элементы FIELDSET и LEGEND

<!--
  #PCDATA используется для решения проблемы смешанного содержимого,
  per specification only whitespace is allowed there!
 -->
<!ELEMENT FIELDSET - - (#PCDATA,LEGEND,(%flow;)*) - группа управляющих элементов формы -->
<!ATTLIST FIELDSET
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!ELEMENT LEGEND - - (%inline;)*       -- legend набора полей -->
<!ENTITY % LAlign "(top|bottom|left|right)">

<!ATTLIST LEGEND
  %attrs;                              -- %coreattrs, %i18n, %events --
  accesskey   %Character;    #IMPLIED  -- клавиша доступа  --
  >

Начальный тег: обязателен, Конечный тег: обязателен

LEGEND Определения атрибутов

align = top|bottom|left|right [CI]
Нежелателен. Определяет положение legend относительно набора полей. Возможные значения:
  • top: legend располагается сверху набора полей. Это значение используется по умолчанию.
  • bottom: legend располагается внизу набора полей.
  • left: legend располагается в левой части набора полей.
  • right: legend располагается в правой части набора полей.

Атрибуты, определяемые в другом месте

  • id, class (идентификаторы в пределах документа)
  • lang (информация о языке), dir (направление текста)
  • title (заголовок элемента)
  • style (встроенная информация о стиле)
  • accesskey (клавиши доступа)
  • onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события)

Элемент FIELDSET позволяет авторам группировать связанные метки и управляющие элементы по темам. Группировка управляющих элементов упрощает пользователям понимание назначения элементов, одновременно упрощая переход по клавише tab для визуальных агентов пользователей и речевую навигацию для звуковых агентов пользователей. Корректное использование этого элемента повышает доступность документов.

Элемент LEGEND позволяет авторам назначать заголовки для элемента FIELDSET. Legend повышает доступность, если элемент FIELDSET представляется невизуально.

В этом примере мы создадим форму, которую можно заполнять на приеме у врача. Она имеет три раздела: личная информация, история болезни и текущее лечение. В каждом разделе имеются управляющие элементы для ввода соответствующей информации.

<FORM action="..." method="post">
 <P>
 <FIELDSET>
  <LEGEND>Личная информация</LEGEND>
  Фамилия: <INPUT name="personal_lastname" type="text" tabindex="1">
  Имя: <INPUT name="personal_firstname" type="text" tabindex="2">
  Адрес: <INPUT name="personal_address" type="text" tabindex="3">
  ...другая персональная информация...
 </FIELDSET>
 <FIELDSET>
  <LEGEND>История болезни</LEGEND>
  <INPUT name="history_illness"
         type="checkbox"
         value="Smallpox" tabindex="20"> Smallpox
  <INPUT name="history_illness"
         type="checkbox"
         value="Mumps" tabindex="21"> Mumps
  <INPUT name="history_illness"
         type="checkbox"
         value="Dizziness" tabindex="22"> Dizziness
  <INPUT name="history_illness"
         type="checkbox"
         value="Sneezing" tabindex="23"> Sneezing
  ...продолжение истории болезни...
 </FIELDSET>
 <FIELDSET>
  <LEGEND>Текущее лечение</LEGEND>
  Принимаете ли Вы сейчас медицинские препараты?
  <INPUT name="medication_now"
         type="radio"
         value="Yes" tabindex="35">Да
  <INPUT name="medication_now"
         type="radio"
         value="No" tabindex="35">Нет

  Если да, перечислите их ниже:
  <TEXTAREA name="current_medication"
            rows="20" cols="50"
            tabindex="40">
  </TEXTAREA>
 </FIELDSET>
</FORM>

Обратите внимание, что в этом примере мы можем улучшить визуальное представление формы, добавив элементы в каждый элемент FIELDSET (с помощью таблиц стилей), добавив информацию о цвете и шрифте (с помощью таблиц стилей), добавив скрипты (например, чтобы область "текущее лечение" открывалась, только если пользователь указывает, что он проходит лечение) и т.д. /samp

17.11 Переход фокуса на элемент

В документе HTML, чтобы стать активным и выполнить свои задачи, элемент должен получить фокус от пользователя. Например, пользователи должны активизировать ссылку, задаваемую элементом A, чтобы перейти к связанному документу. Точно так же пользователи должны перевести фокус на элемент TEXTAREA, чтобы в него можно было вводить текст.

Имеется несколько способов передачи фокуса элементу:

  • Указать элемент с помощью указательного устройства.
  • Перейти с одного элемента на другой с помощью клавиатуры. Автор документа может определить последовательность перехода, определяющую порядок получения элементами фокуса при переходе пользователя по документу с помощью клавиатуры (см. переход по клавише tab). Выбранный элемент можно активизировать с помощью другой последовательности клавиш.
  • Выбрать элемент с помощью клавиши доступа (иногда называется "клавиатурным сокращением").

17.11.1 Переход с помощью клавиши Tab

Определения атрибутов

tabindex = number [CN]
Определяет положение текущего элемента в последовательности перехода для текущего документа. Значение должно лежать в диапазоне от 0 до 32767. Агенты пользователей должны игнорировать начальные нули.

Последовательность перехода определяет порядок получения фокуса элементами при переходе с помощью клавиатуры. Последовательность перехода может включать элементы, вложенные в другие элементы.

Переход к элементам, которые могут получать фокус, должен осуществляться агентами пользователей в соответствии со следующими правилами:

  1. Переход к элементам, поддерживающим атрибут tabindex, которому назначено положительное значение, должен осуществляться в первую очередь. Переход производится от элементов с наименьшим значением атрибута tabindex до элементов с наивысшим значением. Значения не обязательно должны быть последовательными и не обязательно должны начинаться с какого-то конкретного значения. Переход к элементам с одинаковыми значениями атрибута tabindex должен осуществляться в порядке их нахождения в потоке символов.
  2. Переход к элементам, не поддерживающим атрибут tabindex или элементам, у которых значением этого атрибута является "0", выполняется в следующую очередь. Переход к этим элементам производится в порядке их нахождения в потоке символов.
  3. Отключенные элементы не участвуют в последовательности перехода.

Следующие элементы поддерживают атрибут tabindex: A, AREA, BUTTON, INPUT, OBJECT, SELECT и TEXTAREA.

В этом примере последовательность перехода будет включать элементы BUTTON, INPUT в порядке (обратите внимание, что "field1" и кнопка используют одно и то же значение атрибута tabindex, но "field1" находится потоке в потоке символов), и наконец, ссылка, создаваемая элементом A.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
   "http://www.w3.org/TR/REC-html40/strict.dtd">
<HTML>
<HEAD>
<TITLE>Документ с тегом FORM</TITLE>
</HEAD>
<BODY>
...некоторый текст...
<P>Посетите
<A tabindex="10" href="http://www.w3.org/">сайт W3C.</A>
...еще текст...
<BUTTON type="button" name="get-database"
           tabindex="1" onclick="get-database">
Текущая база данных.
</BUTTON>
...еще текст...
<FORM action="..." method="post">
<P>
<INPUT tabindex="1" type="text" name="field1">
<INPUT tabindex="2" type="text" name="field2">
<INPUT tabindex="3" type="submit" name="submit">
</P>
</FORM>
</BODY>
</HTML>

Клавиши перехода. Фактическая последовательность клавиш, обеспечивающая переход или активизацию элемента, зависит от конфигурации агента пользователя (например, клавиша "tab" используется для перехода, а клавиша "enter" - для активизации выбранного элемента).

Агенты пользователей могут также определять последовательности клавиш для перехода в обратном порядке. По достижении конца (или начала) последовательности агенты пользователей могут переходить в начало (или в конец).

17.11.2 Клавиши доступа

Определения атрибутов

accesskey = character [CN]
Назначает для элемента клавишу доступа. Клавиша доступа - это один символ из набора символов документа. Примечание. При определении клавиши доступа авторы должны учитывать способ ввода, который, скорее будет использоваться читателем.

Нажатие назначенной элементу клавиши доступа передает элементу фокус. Действие, происходящее по получении элементом фокуса, зависит от элемента. Например, если пользвоатель активизирует ссылку, определяемую элементом A, агент пользователя обычно производит переход по ссылке. Если пользователь активизирует кнопку с зависимой фиксацией, агент пользователя изменяет значение кнопки. Если пользователь активизирует текстовое поле, в него разрешается ввод и т.д.

Следующие элементы поддерживают атрибут accesskey: A, AREA, BUTTON, INPUT, LABEL, LEGEND и TEXTAREA.

В этом примере клавиша доступа "U" назначается метке, связанной с управляющим элементом INPUT. Нажатие клавиши доступа переводит фокус на метку, которая, в свою очередь, передает его связанному с ней управляющему элементу. После этого пользователь может ввести текст в область INPUT.

<FORM action="..." method="post">
<P>
<LABEL for="fuser" accesskey="U">
User Name
</LABEL>
<INPUT type="text" name="user" id="fuser">
</P>
</FORM>

В этом примере мы назначаем клавишу доступа ссылке, определяемой элементом A. Нажатие этой клавиши приведет к переходу пользователя в другой документ, в данном случае - в оглавление.

<P><A accesskey="C"
      rel="contents"
      href="http://someplace.com/specification/contents.html">
    Оглавление</A>

Использование клавиши доступа зависит от системы. Например, на машинах под управлением MS Windows обычно вместе с клавишей доступа нужно нажимать клавишу "alt". В системах Apple обычно требуется нажатие клавиши "cmd".

Представление клавиши доступа зависит от агента пользователя. Авторам рекомендуется включать клавиши доступа в текст метки или туда, где применяется клавиша доступа. Агенты пользователей должны представлять значение клавиши доступа таким образом, чтобы подчеркнуть ее роль и дать отличить ее от других символов (например, с помощью подчеркивания).

17.12 Отключенные управляющие элементы и элементы только для чтения

В контекстах, где ввод пользователя нежелателен или не требуется, важна возможность отключения управляющего элемента или представление его только для чтения. Например, можно отключить кнопку отправки формы до ввода некоторых обязательных данных. Аналогично, автор может включить текст только для чтения, который должен передаваться с формой как значение. В следующих разделах описываются отключенные управляющие элементы и элементы только для чтения.

17.12.1 Отключенные управляющие элементы

Определения атрибутов

disabled [CI]
Если этот атрибут установлен для управляющего элемента формы, ввод пользователем в этот элемент невозможен.

Если атрибут disabled установлен, он влияет на элемент следующим образом:

  • К отключенным элементам не переходит фокус.
  • Отключенные элементы не участвуют в переходе по клавише tab.
  • Отключенные управляющие элементы не могут быть успешными.

Атрибут disabled поддерживают следующие элементы: BUTTON INPUT, OPTGROUP, OPTION, SELECT и TEXTAREA.

Этот атрибут наследуется, но локальные объявления имеют приоритет над наследуемым значением.

Представление отключенных элементов зависит от агента пользователя. Например, некоторые агенты пользователей "выделяют серым" отключенные пункты меню, метки кнопок и т.д.

В этом примере элемент INPUT отключен. Таким образом, пользователь не может ввести туда текст, и его значение не будет передаваться с формой.

<INPUT disabled name="fred" value="stone">

Примечание. Единственным способом динамического изменения значения атрибута disabled является использование скрипта.

17.12.2 Управляющие элементы только для чтения

Определения атрибутов

readonly [CI]
Если этот атрибут установлен для управляющего элемента формы, изменение значения этого элемента невозможно.

Атрибут readonly определяет, может ли пользователь изменять содержимое управляющего элемента.

Если атрибут readonly установлен, он влияет на элемент следующим образом:

  • К элементам только для чтения переходит фокус, но пользователь не может изменять их.
  • Элементы только для чтения входят в последовательность перехода.
  • Элементы только для чтения могут быть успешными.

Атрибут readonly поддерживают следующие элементы: INPUT, TEXT, PASSWORD и TEXTAREA.

Представление элементов только для чтения зависит от агента пользователя.

Примечание. Единственным способом динамического изменения значения атрибута только для чтения является использование скриптов.

17.13 Отправка формы

В следующих разделах объясняется передача данных формы агентами пользователей агентам обработки форм.

17.13.1 Метод отправки формы

Атрибут method элемента FORM определяет метод HTTP, используемый для отправки формы в агент обработки. Этот атрибут может принимать два значения:

  • get: С использованием метода HTTP "get" набор данных формы добавляется к URI, указанному в атрибуте action, и этот новый URI отправляется в агент обработки.
  • post: С использованием метода HTTP "post" набор данных формы включается в тело формы и отправляется в агент обработки.

Метод "get" следует использовать, если форма is idempotent (то есть не вызывает побочных эффектов). Большое число операций поиска в базе данных не имеет видимых побочных эффектов и представляет собой идеальное приложение для метода "get".

Если обслуживание, связанное с обработкой формы, вызывает побочные эффекты (например, если форма изменяет базу данных или производит подписку н услуги), следует использовать метод "post".

Примечание. При использовании метода "get" набор данных формы должен включать только символы набора ASCII. Только с методом "post" (с атрибутом enctype="multipart/form-data") можно использовать весь набор символов [ISO10646].

17.13.2 Успешные управляющие элементы

Успешный управляющий элемент "подходит" для отправки. Каждый успешный управляющий элемент имеет имя и текущее значение; эта пара является частью передаваемого набора данных формы. Успешный управляющий элемент должен определяться в элементе FORM и должен иметь имя.

Однако:

  • Отключенные управляющие элементы не могут быть успешными.
  • Если в форме содержится несколько кнопок отправки, успешной является только активизированная кнопка.
  • Успешными могут быть все "включенные" флажки.
  • Для кнопок с зависимой фиксацией с одним и тем же значением атрибута name, успешной может быть только "включенная" кнопка.
  • Для меню имя управляющего элемента задается элементом SELECT, а значения - элементами OPTION. Успешными могут быть только выбранные пункты.
  • Текущее значение элемента выбора файлов является список из одного или нескольких имен файлов. После отправки формы содержимое каждого файла передается с остальными данными формы. Содержимое файла упаковывается в соответствии с типом содержимого формы.
  • Текущее значение управляющего элемента объекта определяется реализацией объекта.

Если управляющий элемент не имеет текущего значения во время отправки формы, агенты пользователей не обязательно должны обрабатывать его как успешный.

Более того, агенты пользователей не должны считать успешными следующие управляющие элементы:

  • Кнопку сброса.
  • Элементы OBJECT, у которых установлен атрибут declare.

Скрытые управляющие элементы и управляющие элементы, не представляемые благодаря таблицам стилей могут быть успешными. Например:

<FORM action="..." method="post">
<P>
<INPUT type="password" style="display:none"
          name="invisible-password"
          value="mypassword">
</FORM>

В этом случае значению будет сопоставлено имя "invisible-password", и оно будет передаваться с формой.

17.13.3 Обработка данных формы

Когда пользователь отправляет форму (например, активизировав кнопку отправки), агент пользователя обрабатывает ее следующим образом.

Первый шаг: Определение успешных управляющих элементов

Второй шаг: Построение набора данных формы

Набор данных формы - это последовательность пар имя/значение, составляемых из успешных управляющих элементов

Третий шаг: Кодирование набора данных формы

Затем набор данных формы кодируется в соответствии с типом содержимого, определяемого атрибутом enctype элемента FORM.

Четвертый шаг: Передача закодированного набора данных формы

Наконец, закодированные данные отправляются обрабатывающему агенту, назначаемому атрибутом action, по протоколу, указанному в атрибуте method.

В данной спецификации не определяются все допустимые способы отправки или типы содержимого, которые могут использоваться с формами. Однако агенты пользователей HTML 4.0 должны поддерживать установленные соглашения в следующих случаях:

  • Если для атрибута method установлено значение "get", а для атрибута action указан HTTP URI, агент пользователя принимает значение атрибута action, добавляет к нему `?', затем добавляет набор данных формы, закодированный с использованием типа содержимого "application/x-www-form-urlencoded". Затем агент пользователя переходит по ссылке на этот URI. В этом сценарии данные формы ограничиваются кодами ASCII.
  • Если для атрибута method установлено значение "post", а для атрибута action - HTTP URI, агент пользователя выполняет транзакцию HTTP "post" с использованием значения атрибута action и сообщения, созданного в соответствии с типом содержимого, указанным в атрибуте enctype attribute.

Для других значений атрибута action или method поведение не определено.

Агенты пользователей должны представлять ответ на транзакции HTTP "get" и "post".

17.13.4 Типы содержимого формы

Атрибут enctype элемента FORM определяет тип содержимого, используемый для кодирования набора данных формы для передачи на сервер. Агенты пользователей должны поддерживать перечисленные ниже типы содержимого. Поведение для других типов содержимого не определено.

См. также раздел об использовании амперсандов в значениях атрибутов URI.

application/x-www-form-urlencoded

Этот тип содержимого используется по умолчанию. Формы, передаваемые с этим типом содержимого, должны быть закодированы следующим образом:

  1. Имена и значения управляющих элементов are escaped. Неотображаемые символы заменяются `+', после чего зарезервированные символы are escaped, как описано в [RFC1738], раздел 2.2: Неарифметические символы заменяются `%HH', знаком процентов с последующими шестнадцатеричными цифрами, представляющими ASCII-код символа. Разрывы строк представляются парами "CR LF" (т.е. `%0D%0A').
  2. Имена/значения управляющих элементов перечисляются в том порядке, в котором они отображаются в документе. Имя отделяется от значения с помощью символа `=', а пары имя/значение отделяются друг от друга символом `&'.

multipart/form-data

Примечание. Дополнительную информацию о вопросах совместимости с предыдущими версиями, об отношении типа содержимого "multipart/form-data" и других типов содержимого, о проблемах работы и т.д. см. в [RFC1867].

Информацию о защите форм см. в приложении.

Тип "application/x-www-form-urlencoded" неэффективен для отправки большого количества двоичных данных или текста, содержащего символы, не входящие в набор ASCII. Тип "multipart/form-data" следует использовать для отправки форм, содержащих файлы, данные, не входящие в набор ASCII и двоичные данные.

В содержимом "multipart/form-data" используются правила всех составных потоков данных MIME, как описано в [RFC2045]. Определение типа "multipart/form-data" можно найти в реестре [IANA].

Сообщение типа "multipart/form-data" состоит из нескольких частей, каждая их которых представляет успешный управляющий элемент. Части отправляются обрабатывающему агенту в том порядке, в котором соответствующие управляющие элементы представлены в потоке документа. Границы частей не должны находиться в данных; обеспечение этого требования лежит вне области, рассматриваемой в данной спецификации.

Как и во всех составных типах MIME, каждая часть имеет необязательный заголовок "Content-Type", для которого по умолчанию устанавливается значение "text/plain". Агенты пользователей должны предоставлять заголовок "Content-Type" с параметром "charset".

Каждая часть должна содержать:

  1. заголовок "Content-Disposition", имеющий значение "form-data".
  2. атрибут именования, определяющий имя соответствующего управляющего элемента. Имена управляющих элементов, изначально закодированные с использованием наборов символов, отличных от ASCII, могут кодироваться с помощью метода, описанного в [RFC2045].

Например, для управляющего элемента с именем "mycontrol" соответствующая часть может выглядеть так:

Content-Disposition: form-data; name="mycontrol"

Как и во всех процессах передачи данных MIME, для разделения строк данных используется комбинация "CR LF" (т.е. `%0D%0A').

Может кодироваться каждая часть с указанием заголовка "Content-Transfer-Encoding", если значение этой части не соответствует кодировке по умолчанию (7BIT) (см. [RFC2045], раздел 6)

Если содержимое файла передается с формой, файловый ввод должен определяться соответствующим типом содержимого (например, "application/octet-stream"). Если в результате одного элемента формы должны быть возвращены несколько файлов, они должны возвращаться как тип "multipart/mixed", внедренный в "multipart/form-data".

Агент пользователя должен попытаться указать имя для каждого передаваемого файла. Имя файла может указываться в параметре "filename" заголовка 'Content-Disposition: form-data' или, в случае нескольких полей, в заголовке 'Content-Disposition: file' составной части. Если имя файла клиентской операционной системы содержит символы, не входящие в набор US-ASCII, имя файла может изменяться или кодироваться с использованием метода [RFC2045]. Это удобно в случаях, когда, например, выгруженные файлы могут содержать ссылки друг на друга (например, файл TeX и его вспомогательное описание стилей ".sty").

В следующем примере показана кодировка "multipart/form-data". Предположим, у нас имеется следующая форма:

 <FORM action="http://server.dom/cgi/handle"
       enctype="multipart/form-data"
       method="post">
   <P>
   Как Вас зовут? <INPUT type="text" name="submit-name"><BR>
   Какие файлы Вы отправляете? <INPUT type="file" name="files"><BR>
   <INPUT type="submit" value="Отправить"> <INPUT type="reset">
 </FORM>

Если пользователь введет в текстовое поле слово "Larry" и выберет текстовый файл "file1.txt", агент пользователя может отправить следующие данные:

   Content-Type: multipart/form-data; boundary=AaB03x

   --AaB03x
   Content-Disposition: form-data; name="submit-name"

   Larry
   --AaB03x
   Content-Disposition: form-data; name="files"; filename="file1.txt"
   Content-Type: text/plain

   ... содержимое файла file1.txt ...
   --AaB03x--

Если пользователь выбрал второй файл (изображение) "file2.gif", агент пользователя может сконструировать части следующим образом:

   Content-Type: multipart/form-data; boundary=AaB03x

   --AaB03x
   Content-Disposition: form-data; name="submit-name"

   Larry
   --AaB03x
   Content-Disposition: form-data; name="files"
   Content-Type: multipart/mixed; boundary=BbC04y

   --BbC04y
   Content-Disposition: attachment; filename="file1.txt"
   Content-Type: text/plain

   ... содержимое файла file1.txt ...
   --BbC04y
   Content-Disposition: attachment; filename="file2.gif"
   Content-Type: image/gif
   Content-Transfer-Encoding: binary

   ...содержимое файла file2.gif...
   --BbC04y--
   --AaB03x--


Фреймы в документах HTML

16 Фреймы

  1. Введение в фреймы
  2. Расположение фреймов
    1. Элемент FRAMESET
      • Строки и столбцы
      • Вложенные наборы фреймов
      • Разделение данных между фреймами
    2. Элемент FRAME
      • Задание исходного содержимого фрейма
      • Визуальное представление фрейма
  3. Определение цели фрейма
    1. Установка цели по умолчанию для ссылок
    2. Семантика целей
  4. Альтернативное содержимое
    1. Элемент NOFRAMES
    2. Длинные описания фреймов
  5. Встроенные фреймы: элемент IFRAME

16.1 Введение в фреймы

Фреймы в HTML позволяют авторам представлять документы в нескольких разделах, которые могут быть независимыми или вложенными окнами. Это обеспечивает дизайнерам способ оставлять некоторую информацию видимой, в то время как другая информация прокручивается или заменяется. Например, в одном окне в одном фрейме может отображаться статический баннер, во втором навигационное меню, а в третьем - сам документ, который можно прокручивать или переходить к другому с помощью навигации во втором фрейме.

Вот простой документ с использованием фреймов:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN"
   "_THE_LATEST_VERSION_/frameset.dtd">
<HTML>
<HEAD>
<TITLE>Простой документ с фреймами</TITLE>
</HEAD>
<FRAMESET cols="20%, 80%">
  <FRAMESET rows="100, 200">
      <FRAME src="contents_of_frame1.html">
      <FRAME src="contents_of_frame2.gif">
  </FRAMESET>
  <FRAME src="contents_of_frame3.html">
  <NOFRAMES>
      <P>В этом документе содержится:
      <UL>
         <LI><A href="contents_of_frame1.html">Миленький текстик</A>
         <LI><IMG src="contents_of_frame2.gif" alt="Симпатичная картинка">
         <LI><A href="contents_of_frame3.html">Еще славный текстик</A>
      </UL>
  </NOFRAMES>
</FRAMESET>
</HTML>

это может привести примерно к следующей структуре экрана:

 ---------------------------------------
|         |                             |
|         |                             |
| Фрейм 1 |                             |
|         |                             |
|         |                             |
|---------|                             |
|         |          Фрейм 3            |
|         |                             |
|         |                             |
|         |                             |
| Фрейм 2 |                             |
|         |                             |
|         |                             |
|         |                             |
|         |                             |
 ---------------------------------------

Если агент пользователя не может представлять фреймы или сконфигурирован так, чтобы не делать этого, он должен генерировать содержимое элемента NOFRAMES.

16.2 Расположение фреймов

Документ HTML, в котором описывается компоновка фреймов (называемый документом с фреймами), выглядит не так, как документ HTML без фреймов. Атндартный документ имеет один раздел HEAD и один раздел BODY. Документ с фреймами имеет раздел HEAD и раздел FRAMESET, который заменяет раздел BODY.

В разделе FRAMESET задается расположение фреймов в основном окне агента пользователя. Кроме того, в разделе FRAMESET может присутствовать элемент NOFRAMES с альтернативным содержимым для агентов пользователей, не поддерживающих фреймы или сконфигурированных так, чтобы их не показывать.

Элементы, обычно помещаемые в раздел BODY, не должны присутствовать до первого элемента FRAMESET, иначе элемент FRAMESET будет игнорироваться.

16.2.1 Элемент FRAMESET

<![ %HTML.Frameset; [
<!ELEMENT FRAMESET - - ((FRAMESET|FRAME)+ & NOFRAMES?) - подразделение окон-->
<!ATTLIST FRAMESET
  %coreattrs;                          -- id, class, style, title --
  rows        %MultiLengths; #IMPLIED  -- список длин,
                                          по умолчанию: 100% (1 строка) --
  cols        %MultiLengths; #IMPLIED  -- список длин,
                                          по умолчанию: 100% (1 столбец) --
  onload      %Script;       #IMPLIED  -- все фреймы загружены  --
  onunload    %Script;       #IMPLIED  -- все фреймы удалены --
  >
]]>

Определения атрибутов

rows = multi-length-list [CN]
Этот атрибут определяет расположение горизонтальных фреймов. Это разделенный запятыми список пикселов, процентов и относительных длин. По умолчанию используется 100%, что означат одну строку.
cols = = multi-length-list [CN]
Этот атрибут определяет расположение вертикальных фреймов. Это разделенный запятыми список пикселов, процентов и относительных длин. По умолчанию используется 100%, что означат один столбец.

Атрибуты, определяемые в другом месте

  • id, class (идентификаторы в пределах документа identifiers)
  • title (заголовок элемента)
  • style (встроенная информация о стиле)
  • onload, onunload (внутренние события)

Элемент FRAMESET определяет макет основного окна пользователя в виде прямоугольных пространств.

Строки и столбцы

Установка атрибута rows определяет число горизонтальных отрезков пространства в наборе фреймов. Устанвока атрибута cols определяет число вертикальных отрезков. Для создания сетки можно установить оба атрибута одновременно.

Если атрибут rows не установлен, каждый столбец занимает всю длину страницы. Если атрибут cols не установлен, каждая строка занимает всю ширину страницы. Если не установлен ни один из этитх атрибутов, фрейм занимает всю страницу.

Фреймы создаются в направлении слева направо для столбцов и сверху вниз для строк. Если указаны оба атрибута, разделы окон создаются слева направо в верхней строке, слева направо во второй строке и т.д.

В первом примере экран разделяется горизонтально на две части (то есть создаются верхняя и нижняя части).

<FRAMESET rows="50%, 50%">
...продолжение определения...
</FRAMESET>

В следующем примере создается три столбца: второй имеет фиксированную ширину 250 пикселов (это полезно, например, для представления изображения известной ширины). Первый фрейм получает 25% оставшегося пространства, а третий - 75%.

<FRAMESET cols="1*,250,3*">
...продолжение определения...
</FRAMESET>

В следующем примере создается сетка 2x3.

<FRAMESET rows="30%,70%" cols="33%,34%,33%">
...продолжение определения...
</FRAMESET>

Для следующего примера предположим, что окно браузера имеет высоту строго 1000 пикселов. Первый раздел получает 30% общей высоты (300 пикселов). Второй имеет высоту ровно 400 пикселов. Остается 300 пикселов на два другие фрейма. Для четвертого фрейма задана высота "2*", так что он должен быть вдвое выше третьего, для которого заданы высота "*" (эквивалентно 1*). Таким оразом, третий фрейм будет иметь высоту 100 пикселов, а четвертый - 200.

<FRAMESET rows="30%,400,*,2*">
...продолжение определения...
</FRAMESET>

Абсолютные длины, если они не дают в сумме 100% реально доступного пространства, должны корректироваться агентом пользователя. Если указана длина менее фактической, оставшееся пространство должно равномерно распределяться между всеми разделами. Если указана длина, превышающая фактическую, каждый раздел должен уменьшаться в зависимости от того, какую часть пространства он занимает.

Вложенные наборы фреймов

Число уровней вложенности фреймов не ограничено.

В следующем примере внешний элемент FRAMESET разделяет доступное пространство на три равных столбца. Внутренний элемент FRAMESET разделяет вторую область на две строки неравной высоты.

<FRAMESET cols="33%, 33%, 34%">
     ...содержимое первого фрейма...
     <FRAMESET rows="40%, 50%">
        ...содержимое второго фрейма, первая строка...
        ...содержимое второго фрейма, вторая строка...
     </FRAMESET>
     ...содержимое третьего фрейма...
</FRAMESET>

Разделение данных между фреймами

Авторы могут разделять данные между несколькими фреймами, включая эти данные с помощью элемента OBJECT. Элемент OBJECT следует включать в элемент HEAD документа с фреймами и давать ему имя с помощью атрибута id. Любой документ, являющийся содержимым фрейма, может ссылаться на этот идентификатор.

В следующем примере показано обращение скрипта к элементу OBJECT, определенному для всего набора фреймов:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN"
   "_THE_LATEST_VERSION_/frameset.dtd">
<HTML>
<HEAD>
<TITLE>Это набор фреймов с элементом OBJECT в разделе HEAD</TITLE>
<!-Этот элемент OBJECT не представляется! -->
<OBJECT id="myobject" data="data.bar"></OBJECT>
</HEAD>
<FRAMESET>
    <FRAME src="bianca.html" name="bianca">
</FRAMESET>
</HTML>

<!-- In bianca.html -->
<HTML>
<HEAD>
<TITLE>Страница Бьянки</TITLE>
</HEAD>
<BODY>
...начало документа...
<P>
<SCRIPT type="text/javascript">
parent.myobject.myproperty
</SCRIPT>
...продолжение документа...
</BODY>
</HTML>

16.2.2 Элемент FRAME

<![ %HTML.Frameset; [
<!-- зарезервированные имена фреймов начинаются с символа "_", остальные - с буквы -->
<!ELEMENT FRAME - O EMPTY              -- вложенное окно -->
<!ATTLIST FRAME
  %coreattrs;                          -- id, class, style, title --
  longdesc    %URI;          #IMPLIED  -- ссылка на длинное описание
                                          (дополняет заголовок) --
  name        CDATA          #IMPLIED  -- имя целевого фрейма --
  src         %URI;          #IMPLIED  -- исходный документ для фрейма --
  frameborder (1|0)          1         -- нужны границы фрейма? --
  marginwidth %Pixels;       #IMPLIED  -- ширина полей в пикселах --
  marginheight %Pixels;      #IMPLIED  -- высота полей в пикселах --
  noresize    (noresize)     #IMPLIED  -- разрешить пользователям изменять размер фреймов? --
  scrolling   (yes|no|auto)  auto      -- наличией полосы прокрутки --
  >
]]>

Определения атрибутов

name = cdata [CI]
Назначает имя текущему фрейму. Это имя может использоваться в качестве цели в последующих ссылках.
longdesc = uri [CT]
Ссылка на длинное описание фрейма. Это объявление должно дополнять краткое описание, задаваемое атрибутом title, и может быть особенно полезно для невизуальных агентов пользователей.
src = uri [CT]
Определяет местонахождение начального содержимого фрейма.
noresize [CI]
Если этот атрибут присутствует, он сообщает агенту пользователя, что размеры фрейма изменять нельзя.
scrolling = auto|yes|no [CI]
Этот атрибут задает информацию о прокрутке фрейма. Возможные значения
  • auto: При необходимости предоставлять возможности прокрутки. Это значение используется по умолчанию.
  • yes: Всегда предоставлять возможности прокрутки.
  • no: Не предоставлять возможности прокрутки.
frameborder = 1|0 [CN]
Этот атрибут предоставляет агенту пользователя информацию о границе фрейма. Возможные значения:
  • 1: Агент пользователя должен изобразить разделитель между этим фреймам и всеми прилежащими фреймами. Это значение используется по умолчанию.
  • 0: Агент пользователя не должен отображать разделитель. Обратите внимание, что разделители могут все равно отображаться, если они заданы в других фреймах.
marginwidth = пикселы [CN]
Этот атрибут задает пространство, оставляемое во фрейме в качестве левого и правого полей. Значение должно превышать один пиксел. Значение по умолчанию зависит от агента пользователя.
marginheight = пикселы [CN]
Этот атрибут определяет верхнее и нижнее поля в фрейме. Значение должно превышать один пиксел. Значение по умолчанию зависит от агента пользователя.

Атрибуты, определяемые в другом месте

  • id, class (идентификаторы в пределах документа)
  • title (заголовок элемента)
  • style (встроенная информация о стиле)
  • target (информация о целевом фрейме)

Элемент FRAME определяет содержимое и вид одного фрейма.

Задание исходного содержимого фрейма

Атрибут src определяет исходный документ, содержащийся в фрейме.

В следующем примере документа HTML:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN"
   "_THE_LATEST_VERSION_/frameset.dtd">
<HTML>
<HEAD>
<TITLE>Документ с фреймами</TITLE>
</HEAD>
<FRAMESET cols="33%,33%,33%">
  <FRAMESET rows="*,200">
      <FRAME src="contents_of_frame1.html">
      <FRAME src="contents_of_frame2.gif">
  </FRAMESET>
  <FRAME src="contents_of_frame3.html">
  <FRAME src="contents_of_frame4.html">
</FRAMESET>
</HTML>

должна создаваться примерно следующая страница:

 ------------------------------------------
|Фрейм 1     |Фрейм 3       |Фрейм 4       |
|            |              |              |
|            |              |              |
|            |              |              |
|            |              |              |
|            |              |              |
|            |              |              |
|            |              |              |
-------------|              |              |
|Фрейм 2     |              |              |
|            |              |              |
|            |              |              |
 ------------------------------------------

а агент пользователя должен загружать каждый файл в отдельный раздел.

Содержимое фрейма и его определение не должны находиться в одном документе.

ПРИМЕР НЕДОПУСТИМОГО ИСПОЛЬЗОВАНИЯ:
Следующее определение фреймов не является допустимым в HTML, поскольку содержимое второго фрейма находится в документе, описывающем набор фреймов.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN"
   "_THE_LATEST_VERSION_/frameset.dtd">
<HTML>
<HEAD>
<TITLE>Документ с фреймами</TITLE>
</HEAD>
<FRAMESET cols="50%,50%">
  <FRAME src="contents_of_frame1.html">
  <FRAME src="#anchor_in_same_document">
  <NOFRAMES>
  ...некоторый текст...
  <H2><A name="anchor_in_same_document">Important section</A></H2>
  ...некоторый текст...
  </NOFRAMES>
</FRAMESET>
</HTML>

Визуальное представление фрейма

В следующем примере показано использование декоративных атрибутов FRAME. Фрейм 1 не должен содержать полос прокрутки. В фрейме 2 вокруг содержимого (изображения) останется пустое пространство, и размер фрейма нельзя будет изменять. Между фреймами 3 и 4 не будет границы. Границы (по умолчанию) будут присутствовать между фреймами 1, 2 и 3.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN"
   "_THE_LATEST_VERSION_/frameset.dtd">
<HTML>
<HEAD>
<TITLE>Документ с фреймами</TITLE>
</HEAD>
<FRAMESET cols="33%,33%,33%">
  <FRAMESET rows="*,200">
      <FRAME src="contents_of_frame1.html" scrolling="no">
      <FRAME src="contents_of_frame2.gif"
                marginwidth="10" marginheight="15"
                noresize>
  </FRAMESET>
  <FRAME src="contents_of_frame3.html" frameborder="0">
  <FRAME src="contents_of_frame4.html" frameborder="0">
</FRAMESET>
</HTML>

16.3 Определение цели фрейма

Примечание. О том, как сейчас принято определять цель фрейма, Вы можете узнать в замечаниях о фреймах в приложении.

Определения атрибутов

target = frame-target [CI]
Задает имя фрейма, в котором должен открываться документ.
Назначая фрейму имя с помощью атрибута name, авторы могут ссылаться на него как на "target" для ссылок, определяемый другими элементами. Атрибут target может устанавливаться для элементов, создающих ссылки (A, LINK), навигационных карт (AREA) и форм (FORM).

Информацию о рспознаваемых именах фреймов Вы можете найти в разделе о именах целевых фреймов.

В этом примере показано, как цели обеспечивают динамическое изменение содержимого фрейма. Сначала определим набор фреймов в показанном здесь документе frameset.html:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN"
   "_THE_LATEST_VERSION_/frameset.dtd">
<HTML>
<HEAD>
<TITLE>Документ с фреймами</TITLE>
</HEAD>
<FRAMESET rows="50%,50%">
   <FRAME name="fixed" src="init_fixed.html">
   <FRAME name="dynamic" src="init_dynamic.html">
</FRAMESET>
</HTML>

Затем в файле init_dynamic.html мы будем ссылаться на фрейм с именем "dynamic".

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN"
   "_THE_LATEST_VERSION_/frameset.dtd">
<HTML>
<HEAD>
<TITLE>Документ с якорями с определенными целями</TITLE>
</HEAD>
<BODY>
...начало документа...
<P>Теперь можно перейти к
    <A href="slide2.html" target="dynamic">слайду 2.</A>
...продолжение документа...
<P>Все отлично. Переходим к
    <A href="slide3.html" target="dynamic">слайду 3.</A>
</BODY>
</HTML>

Активизация любой из ссылок приведет к открытию нового документа в фрейме с именем "dynamic", в то время как в другом фрейме, "fixed", сохраняется исходное содержимое.

Примечание. Определение набора фреймов никогда не изменяется, но содержимое одного из фреймов может изменяться. При изменении исходного содержимого одного из фреймов определение набора фреймов более не отражает текущего состояния фреймов.

В настоящий момент невозможно кодировать полностью состояние набора фреймов в URI. Таким образом, многие агенты пользователей не позволяют пользователям вносить наборы фреймов в закладки.

Наборы фреймов могут затруднять переход вперед или назад по списку просомтренных в агенте пользователя страниц.

16.3.1 Установка цели по умолчанию для ссылок

Если во многих ссылках в документе используется одна и та же цель, можно указать ее один раз и использовать везде с помощью атрибута target каждого элемента. Это делается с помощью утсановки атрибута target элемента BASE.

Вернемся к предыдущему примеру и определим информацию о цели в элементе BASE и удалим ее из элементов A.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN"
   "_THE_LATEST_VERSION_/frameset.dtd">
<HTML>
<HEAD>
<TITLE>Документ с определением цели в элементе BASE</TITLE>
<BASE href="http://www.mycom.com/Slides" target="dynamic">
</HEAD>
<BODY>
...начало документа...
<P>Теперь Вы можете перейти к <A href="slide2.html">слайду 2.</A>
...продолжение документа...
<P>Все отлично. Переходим к
       <A href="slide3.html">слайду 3.</A>
</BODY>
</HTML>

16.3.2 Семантика целей

Агенты пользователей должны определять целевой фрейм, в который должен загружаться связанный ресурс в соответствии со следующими приоритетами (от высшего к низшему):

  1. Если в элементе установлен атрибут target и используется известный фрейм, при активизации элемента (то есть щелчке на ссылки или обработке формы) назначаемый элементом ресурс должен загружаться в указанном целевом фрейме.
  2. Если для элемента не установлен атрибут target, а в элементе BASE он установлен, фрейм определяется атрибутом target элемента BASE.
  3. Если ни в самом элементе, ни в элементе BASE цель не указана, назначенный элементом ресурс должен загружаться во фрейм, в котором содержится сам элемент.
  4. Если в атрибуте target указан неизвестный фрейм F, агент пользователя должен создать новое окно и фрейм, назначить фрейму имя F и загрузить назначаемый элементом ресурс в новый фрейм.

Агенты пользователей могут обеспечивать для пользователей механизм переопределения атрибута target.

16.4 Альтернативное содержимое

Авторы должны указывать альтернативное содержимое для агентов пользователей, не поддерживающих фреймы или сконфигурированных так, чтобы не отображать их.

16.4.1 Элемент NOFRAMES

<![ %HTML.Frameset; [
<!ENTITY % noframes.content "(BODY) -(NOFRAMES)">
]]>

<!ENTITY % noframes.content "(%flow;)*">

<!ELEMENT NOFRAMES - - %noframes.content;
 -- контейнер альтернативного содержимого для представления без фреймов -->
<!ATTLIST NOFRAMES
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

Элемент NOFRAMES задает содержимое, которое должно отображаться, только если не отображаются фреймы. Агенты пользователей, поддерживающие фреймы, должны отображать содержимое объявления NOFRAMES, только если они сконфигурированы так, чтобы не отображать фреймы. Агенты пользователей, не поддерживающие фреймы, должны отображать содержимое элемента NOFRAMES в любом случае.

Элемент NOFRAMES можно использовать в разделе FRAMESET документа с фреймами.

Например:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN"
     "_THE_LATEST_VERSION_">
  <HTML>
  <HEAD>
  <TITLE>Документс фреймами и NOFRAMES</TITLE>
  </HEAD>
  <FRAMESET cols="50%, 50%">
     <FRAME src="main.html">
     <FRAME src="table_of_contents.html">
     <NOFRAMES>
     <P>Это <A href="main-noframes.html">
              версия документа без фреймов.</A>
     </NOFRAMES>
  </FRAMESET>
  </HTML>

16.4.2 Длинные описания фреймов

Атрибут longdesc позволяет авторам сделать документы с использованием фреймов более доступными для людей, использующих невизуальные агенты. В этом атрибуте назначается ресурс, предоставляющий длинное описание фрейма. Авторам следует обратить внимание, что длинные описания, связанные с фреймами, прикрепляются к фрейму, а не к его содержимому. Поскольку содержимое может изменяться, исходное длинное описание, скорее всего, перестанет соответствовать содержимому фрейма. В частности, не следует включать изображение как единственное содержимое фрейма.

В следующем документе с фреймами описываются два фрейма. В левом фрейме находится содержание, а в правом сначала - изображение устрицы:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN"
   "_THE_LATEST_VERSION_">
<HTML>
<HEAD>
<TITLE>Плохо составленный документ с фреймами</TITLE>
</HEAD>
<FRAMESET cols="20%, 80%">
   <FRAME src="table_of_contents.html">
   <FRAME src="ostrich.gif" longdesc="ostrich-desc.html">
</FRAMESET>
</HTML>

Обратите внимание, что изображение включено в фрейм независимо от любого элемента HTML, так что у автора нет другой возможности указать альтернативный текст, кроме атрибута longdesc. Если содержимое правого фрейма изменится (например, пользователь выберет в содержании змею), у пользователя не будет текстового доступа к новому содержимому фрейма.

Таким образом, авторы не должны помещать изображение непосредственно в фрейм. Вместо этого изображение должно включаться в отдельный документ HTML и снабжаться там соответствующим альтернативным текстом:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN"
   "_THE_LATEST_VERSION_">
<HTML>
<HEAD>
<TITLE>Хорошо составленный документ с фреймами</TITLE>
</HEAD>
<FRAMESET cols="20%, 80%">
   <FRAME src="table_of_contents.html">
   <FRAME src="ostrich-container.html">
</FRAMESET>
</HTML>

<!-Файл ostrich-container.html: -->
<HTML>
<HEAD>
<TITLE>Быстрая и мощная устрица</TITLE>
</HEAD>
<P>
<OBJECT data="ostrich.gif" type="image/gif">
Эти устрицы здорово вкусные!
</OBJECT>
</HTML>

16.5 Встроенные фреймы : элемент IFRAME

<!ELEMENT IFRAME - - (%flow;)*         -- встроенное окно второго уровня -->
<!ATTLIST IFRAME
  %coreattrs;                          -- id, class, style, title --
  longdesc    %URI;          #IMPLIED  -- ссылка на длинное описание
                                          (дополняет заголовок) --
  name        CDATA          #IMPLIED  -- имя целевого фрейма --
  src         %URI;          #IMPLIED  -- исходный документ для фрейма --
  frameborder (1|0)          1         -- запросить границы фрейма? --
  marginwidth %Pixels;       #IMPLIED  -- ширина полей в пикселах --
  marginheight %Pixels;      #IMPLIED  -- высота полей в пикселах --
  scrolling   (yes|no|auto)  auto      -- наличие полосы прокрутки --
  align       %IAlign;       #IMPLIED  -- вертикальное или горизонтальное выравнивание --
  height      %Length;       #IMPLIED  -- высота фрейма --
  width       %Length;       #IMPLIED  -- ширина фрейма --
  >

Определения атрибутов

longdesc = uri [CT]
Этот атрибут определяет ссылку на длинное описание фрейма. Это описание должно дополнять краткое описание, задаваемое атрибутом title, и особенно полезно для невизуальных агентов пользователей.
name = cdata [CI]
Этот атрибут назначает имя текущего фрейма. Имя может использоваться в качестве цели в ссылках.
width = длина [CN]
Длина встроенного фрейма.
height = длина [CN]
Высота встроенного фрейма.

Атрибуты, определяемые в другом месте

  • id, class (идентификаторы в пределах документа)
  • title (заголовок элемента)
  • style (встроенная информация о стиле)
  • name, src, frameborder, marginwidth, marginheight, scrolling (frame controls and decoration)
  • target (информация о целевом фрейме)
  • align (выравнивание)
Элемент IFRAME позволяет авторам вставлять фрейм в блок текста. Вставка встроенного фрейма в раздел текста скорее похожа на вставку объекта с помощью элемента OBJECT: оба они позволяют Вам вставить один документ HTML в другой, оба могут выравниваться относительно окружающего текста и т.д.

Встраиваемая инфомрация назначается атрибутом src этого элемента. Содержимое элемента IFRAME, с другой стороны, должно отображаться только агентами пользователей, не поддерживающими фреймы или сконфигурированными так, чтобы не поддерживать их.

Для поддерживающих фреймы агентов пользователей в следующем примере в текст будет помещен отделенный границей встроенный фрейм.

  <IFRAME src="foo.html" width="400" height="500"
             scrolling="auto" frameborder="1">
  [Ваш агент не поддерживает фреймы или сконфигурирован так, чтобы
  не отображать их. Однако Вы можете просмотреть
  <A href="foo.html">этот документ.</A>]
  </IFRAME>

Изменять размер встроенных фреймов нельзя (и поэтому у них нет атрибута noresize).

Примечание. Документы HTML могут также внедряться в другие документы HTML с помощью элемента OBJECT. Подробнее см. в разделе о внедренных документах.


HTML 4.0 Frameset Document Type Definition

23 Определение типа документов с фреймами (Frameset Document Type Definition)

<!--
    Это объявление HTML 4.0 Frameset DTD должно
    использоваться для документов с фреймами. Это DTD
    совпадает с HTML 4.0 Transitional DTD за исключением
    модели содержимого элемента "HTML": в документах с
    фреймами элемент "FRAMESET" заменяет элемента "BODY".

          Черновик: $Дата: 1997/12/11 15:31:11 $

 Авторы:
              Дэйв Рэгетт <dsr@w3.org>
              Арно Ле Орс <lehors@w3.org>
              Ян Джейкобс <ij@w3.org>

 Подробную информацию о HTML 4.0 можно найти по адресу:

          http://www.w3.org/TR/REC-html40.
-->
<!ENTITY % HTML.Version "-//W3C//DTD HTML 4.0 Frameset//EN"
  -- Пример типичного использования:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN"
            "http://www.w3.org/TR/REC-html40/frameset.dtd">
    <html>
    <head>
    ...
    </head>
    <frameset>
    ...
    </frameset>
    </html>
-->

<!ENTITY % HTML.Frameset "INCLUDE">
<!ENTITY % HTML4.dtd PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
%HTML4.dtd;


Глобальная структура документа в формате HTML

7 Глобальная структура документа в формате HTML

  1. Введение в структуру документа HTML
  2. Информация о версии HTML
  3. Элемент HTML
  4. Заголовок документа
    1. Элемент HEAD
    2. Элемент TITLE
    3. Атрибут title
    4. Метаданные
      • Указание метаданных
      • Элемент META
      • Профили метаданных
  5. Тело документа
    1. Элемент BODY
    2. Идентификаторы элементов: атрибуты id и class
    3. Элементы уровня блока и встроенные элементы
    4. Группировка элементов: элементы DIV и SPAN
    5. Заголовки: Элементы H1, H2, H3, H4, H5, H6
    6. Элемент ADDRESS

7.1 Введение в структуру документа HTML

Документ в формате HTML 4.0 состоит из трех частей:

  1. строки, содержащей информацию о версии HTML,
  2. раздела заголовков (определяемого элементом HEAD),
  3. тела, которое включает собственно содержимое документа. Тело может вводиться элементом BODY или элементом FRAMESET.

Перед каждым элементом или после каждого элемента может находиться пустое пространство (пробелы, переход на новую строку, табуляции и комментарии). Разделы 2 и 3 должны отделяться элементом HTML.

Вот пример простого документа HTML:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
   "http://www.w3.org/TR/REC-html40/strict.dtd">
<HTML>
   <HEAD>
      <TITLE>Мой первый документ HTML</TITLE>
   </HEAD>
   <BODY>
      <P>Всем привет!
   </BODY>
</HTML>

7.2 Информация о версии HTML

В документе HTML должна быть объявлена используемая в нем версия языка HTML. Объявление типа документа указывает определение типа документа (DTD), используемое в этом документе (см. [ISO8879]).

HTML 4.0 определяет три DTD, так что авторы должны включать в свои документы одно из следующих объявлений типов. Разница между DTD заключается в поддерживаемых ими элементах.

  • HTML 4.0 Strict DTD (строгое определение) включает все элементы и атрибуты, не являющиеся нежелательными и не использующиеся в документах с кадрами. Для документов, использующих это DTD, используйте такое объявление типа документа:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
        "http://www.w3.org/TR/REC-html40/strict.dtd">
  • HTML 4.0 Transitional DTD (переходное определение) включает все, что включено в строгое DTD, а также нежелательные элементы и атрибуты (большинство из которых относится к визуальному представлению). Для документов, использующих это DTD, используйте такое объявление типа документа:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
        "http://www.w3.org/TR/REC-html40/loose.dtd">
  • HTML 4.0 Frameset DTD (определение для кадров) включает все, что включено в переходное DTD, а также кадры. Для документов, использующих это DTD, используйте такое объявление типа:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN"
        "http://www.w3.org/TR/REC-html40/frameset.dtd">

URI в каждом объявлении типа документа позволяет агентам пользователей загрузить DTD и все необходимые entity sets. Следующие URI указывают на DTD и наборы комбинаций для HTML 4.0, поддерживаемого W3C:

  • "http://www.w3.org/TR/REC-html40/strict.dtd" - строгое DTD по умолчанию
  • "http://www.w3.org/TR/REC-html40/loose.dtd" - переходное DTD
  • "http://www.w3.org/TR/REC-html40/frameset.dtd" -- DTD для документов, использующих кадры
  • "http://www.w3.org/TR/REC-html40/HTMLlat1.ent" - комбинации Latin-1
  • "http://www.w3.org/TR/REC-html40/HTMLsymbol.ent" - комбинации символов
  • "http://www.w3.org/TR/REC-html40/HTMLspecial.ent" - специальные комбинации

Связь между общими идентификаторами и файлами можно указать с использованием файла каталога, за которым следует формат, рекомендуемый Открытым консорциумом SGML (см. [SGMLOPEN]). Примерный файл каталога для HTML 4.0 включен в начало раздела о справочной информации об SGML для HTML. Две последние буквы декларации указывают язык DTD. Для HTML это всегда английский ("EN").

7.3 Элемент HTML

<!ENTITY % html.content "HEAD, BODY">

<!ELEMENT HTML O O (%html.content;)    -- корневой элемент документа -->
<!ATTLIST HTML
  %i18n;                               -- lang, dir --
  >

Начальный тег: необязателен, Конечный тег: необязателен

Определения атрибутов

версия = cdata [CN]
Нежелателен. Значение этого атрибута указывает версию HTML DTD, которой подчиняется этот документ. Этот атрибут является нежелательным, поскольку он является избыточным при наличии информации о версии, указываемой в объявлении типа документа.

Атрибуты, определяемые в любом другом месте

  • lang (информация о языке), dir (направление текста)

После объявления типа документа остальная часть документа HTML содержится в элементе HTML. Таким образом, типичный документ HTML имеет такую структуру:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
"http://www.w3.org/TR/REC-html40/strict.dtd">
<HTML>
...Здесь идут заголовок, тело и т.д...
</HTML>

7.4 Заголовок документа

7.4.1 Элемент HEAD

<!-- %head.misc;, определенный ранее как "SCRIPT|STYLE|META|LINK|OBJECT" -->
<!ENTITY % head.content "TITLE & BASE?">

<!ELEMENT HEAD O O (%head.content;) +(%head.misc;) - заголовок документа -->
<!ATTLIST HEAD
  %i18n;                               -- lang, dir --
  profile     %URI;          #IMPLIED  -- каталог метаинформации --
  >

Начальный тег: не обязателен, Конечный тег: не обязательно

Определения атрибутов

profile = uri [CT]
Этот атрибут указывает местоположение одного или нескольких профилей метаданных, отделяемых пробелами. Для расширения в будущем агенты пользователей должны предполагать, что значение является списком, хотя в данной спецификации значащим считается только первый URI. Профили обсуждаются ниже в разделе о метаданных.

Атрибуты, определяемые в любом другом месте

  • lang (информация о языке), dir (направление текста)

Элемент HEAD содержит информацию о текущем документе, такую как заголовок, ключевые слова, которые могут использоваться поисковыми машинами, и другие данные, которые не считаются содержимым документа. Агенты пользователей обычно не используют при генерации элементы из раздела HEAD. Однако они могут предоставлять пользователям информацию из раздела HEAD с помощью своих собственных механизмов.

7.4.2 Элемент TITLE

<!-- Элемент TITLE не считается частью текста.
       Он должен отображаться, например, в качестве заголовка страницы
       или окна. В документе должен быть ровно один заголовок.
    -->
<!ELEMENT TITLE - - (#PCDATA) -(%head.misc;) - заголовок документа -->
<!ATTLIST TITLE %i18n>

Начальный тег: обязателен, Конечный тег: обязателен

Атрибуты, определяемые в любом другом месте

  • lang (информация о языке), dir (направление текста)

Каждый документ HTML должен иметь элемент TITLE в разделе HEAD.

Авторы должны использовать элемент TITLE для идентификации содержимого документа. Поскольку пользователи часто обращаются к документам за пределами контекста, авторам следует обеспечивать заголовки в широком контексте. Таким образом, вместо заголовков типа "Введение", ничего не говорящих о контексте, авторам следует использовать заголовки типа "Введение в средневековое пчеловодство".

Из соображений доступности агенты пользователей всегда должны делать содержимое элемента TITLE доступным пользователям (включая элементы TITLE в кадрах). Механизм этого зависит от агента пользователя (например, в виде заголовка или произносимый).

Заголовки могут включать комбинации символов (для символов со знаком ударения, специальных символов и т.д.), но не могут содержать другой разметки. Вот образец заголовка документа:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
   "http://www.w3.org/TR/REC-html40/strict.dtd">
<HTML>
<HEAD>
<TITLE>Исследование динамики популяции</TITLE>
... другие элементы заголовка...
</HEAD>
<BODY>
... тело документа...
</BODY>
</HTML>

7.4.3 Атрибут title

Определения атрибутов

title = text [CS]
Этот атрибут предлагает информацию об элементе, для которого он устанавливается.

В отличие от элемента TITLE, который предоставляет информацию обо всем документе и может присутствовать в тексте только один раз, атрибут title может сопровождать любое число элементов. Узнать, поддерживает ли элемент этот атрибут, можно в определении элемента.

Значения атрибута title могут использоваться агентами пользователя в генерации изображения по-разному. Например, визуальные браузеры часто отображают заголовок как подсказку (краткое сообщение, которое появляется, если Вы указываете на объект). Аудиоагенты пользователя могут проговаривать информацию заголовка. Например, установка этого атрибута для ссылки позволяет агентам пользователей (визуальным и невизуальным) сообщить пользователям о природе связанного ресурса:

...текст...
Вот фотография
<A href="http://someplace.com/neatstuff.gif" title="Me scuba diving">
   как я нырял в прошлом году
</A>
...еще текст...

Атрибут title играет дополнительную роль при использовании с элементом LINK для назначения внешней таблицы стилей. Подробнее см. в разделе о ссылках и таблицах стилей.

Примечание. Для улучшения качества синтеза речи в случае плохой обработки стандартными механизмами будущие версии HTML могут включать атрибут для кодирования фонематической информации.

7.4.4 Метаданные

Во время написания этой спецификации проводились работы по предоставлению авторам возможности задания большего количества машинно-читаемой информации о документах HTML и других сетевых ресурсах. Для метаданных W3C разработан Язык описания ресурсов (см. [RDF]).

HTML позволяет авторам указывать метаданные -- информацию о документе вместо содержимого документа - множеством способов.

Например, чтобы указать автора документа, можно использовать элемент META следующим образом:

<META name="Author" content="Дэйв Рэггетт">

Элемент META задает свойство (здесь "Author (Автор)") и назначает ему значение (здесь - "Дэйв Рэггетт").

Данная спецификация не определяет набор допустимых свойств метаданных. Значение свойства и набор допустимых значений этого свойства должны определяться в относительном словаре, называемом профилем. Например, профиль, разработанный для помощи в индексировании документов для поисковых машин может определять такие свойства как "author", "copyright", "keywords" и т.д.

Указание метаданных

В общем случае задание метаданных состоит из двух шагов:

  1. Объявление свойства и его значения. Это можно сделать двумя способами:
    1. Из документа с помощью элемента META.
    2. Не из документа с помощью ссылки на метаданные через элемент LINK (см. раздел о типах ссылок).
  2. Сославшись на профиль, в котором определяются свойства и их допустимые значения. Для назначения профиля используйте атрибут profile элемента HEAD.

Помните, что поскольку профиль определяется для элемента HEAD, этот профиль применяется ко всем элементам META и LINK в заголовке документа.

Агенты пользователей не обязательно должны поддерживать механизмы метаданных. В этой спецификации не определяется интерпретация метаданных.

Элемент META

<!ELEMENT META - O EMPTY               -- общая метаинформация -->
<!ATTLIST META
  %i18n;                               -- lang, dir, для использования с содержимым --
  http-equiv  NAME           #IMPLIED  -- имя заголовка ответа HTTP --
  name        NAME           #IMPLIED  -- имя метаинформации --
  content     CDATA          #REQUIRED -- связанная информация --
  scheme      CDATA          #IMPLIED  -- выбор формы содержимого --
  >

Начальный тег: обязателен, Конечный тег: запрещен

Определения атрибутов

Для следующих атрибутов допустимые значения и их интерпретация зависят от профиля:

name = name [CS]
Этот атрибут определяет имя свойства. В данной спецификации не перечисляются допустимые значения этого атрибута.
content = cdata [CS]
Этот атрибут определяет значение свойства. В данной спецификации не перечисляются допустимые значения этого атрибута.
scheme = cdata [CS]
Этот атрибут дает имя схеме, используемой для интерпретации значения свойства (подробнее см. раздел о профилях).
http-equiv = name [CI]
Этот атрибут может использоваться вместо атрибута name. Серверы HTTP используют этот атрибут для сбора информации для заголовков сообщений ответов HTTP.

Атрибуты, определяемые в любо другом месте

  • lang (информация о языке), dir (направление текста)

Элемент META может использоваться для идентификации свойств документа (например, автора, срок истечения, список ключевых слов и т.д.) и назначения им значений. В этой спецификации не определяется нормативный набор значений.

Каждый элемент META задает пару свойство/значение. Атрибут name определяет свойства, а атрибут content - значение.

Например, в следующем объявлении устанавливается значение свойства Author:

<META name="Author" content="Дэйв Рэггетт">

Атрибут lang может использоваться с элементом META для указания языка значения атрибута content. Это позволяет синтезаторам речи использовать правила произношения для разных языков.

В этом примере имя автора объявляется на французском языке:

<META name="Author" lang="fr" content="Arnaud Le Hors">

Примечание. Элемент META - это общий механизм задания метаданных. Однако некоторые элементы и атрибуты HTML уже обрабатывают некоторые части метаданных и могут использоваться авторами вместо элементов META для указания этих частей: элементы TITLE, ADDRESS, INS и DEL, атрибут title и атрибут cite.

Примечание. Если свойство, заданное с помощью элемента META, принимает значение URI, некоторые авторы предпочитают указывать метаданные с помощью элемента LINK. Таким образом, следующее объявление:

<META name="DC.identifier"
      content="ftp://ds.internic.net/rfc/rfc1866.txt">

можно также записать следующим образом:

<LINK rel="DC.identifier"
         type="text/plain"
         href="ftp://ds.internic.net/rfc/rfc1866.txt">
META и заголовки HTTP

Атрибут http-equiv может использоваться вместо атрибута name; он особенно важен, если документы загружаются по протоколу передачи гипертекста (HTTP). Серверы HTTP могут использовать имя свойства, указанное в атрибуте http-equiv для создания заголовка в ответе HTTP в стиле [RFC822]. Подробнее о допустимых заголовках HTTP см. в спецификации HTTP ([RFC2068]).

В следующем примере объявление META:

<META http-equiv="Expires" content="Tue, 20 Aug 1996 14:25:27 GMT">

вернет следующий заголовок HTTP:

Expires: Tue, 20 Aug 1996 14:25:27 GMT

Это может использоваться кэш-памятью для определения того, когда следует загрузить новую копию связанного документа.

Некоторые агенты пользователей поддерживают использование элемента META для обновления текущей страницы по истечении указанного числа секунд с возможностью замены на другой URI.

<META http-equiv="refresh" content="3,http://www.acme.com/intro.html">

content - это число, указывающее задержку в секундах, за которым следует URI, который нужно загрузить по прошествии этого времени. Этот механизм широко используется для создания кратковременных заставок. Однако поскольку некоторые агенты пользователей не поддерживают этот механизм, авторам следует включить в заставку возможность перейти на следующую страницу (чтобы они на "зависли" на заставке).

META и поисковые машины

Основной способ использования элемента META - задание ключевых слов, которые поисковые машины могут использовать для улучшения результатов поиска. Если информация о документе представлена в нескольких элементах META в зависимости от языка, поисковые машины могут фильтровать атрибут lang и отображать результаты поиска с использованием выбранного пользователем языка. Например,

<-- Для говорящих на американском английском -->
<META name="keywords" lang="en-us"
         content="vacation, Greece, sunshine">
<-- Для говорящих на британском английском -->
<META name="keywords" lang="en"
         content="holiday, Greece, sunshine">
<-- для русскоязычных пользователей -->
<META name="keywords" lang="fr"
         content="отпуск, Греция, солнце">

Эффективность поисковых машин можно также повысить с использованием элемента the LINK для задания ссылок на переводы документа на другие языки, ссылки на версии документа для другого носителя (например, PDF), и, если документ является частью набора, ссылки на соответствующую начальную точку для просмотра набора.

Дальнейшая информация находится в разделе Как помочь поисковым машинам проиндексировать Ваш Web-сервер .

META и PICS
Platform for Internet Content Selection (Платформа для выбора содержимого Интернет) (PICS, specified in [PICS]) - это инфраструктура для связывания меток (метаданных) с содержимым Интернет. Созданная для помощи родителям и учителям в управлении доступом детей к Интернет, она также упрощает другое использование меток, включая управление подписью кодов, секретностью и правами интеллектуальной собственности.

Этот пример иллюстрирует использование объявления META для включения метки PICS 1.1:

<HEAD>
 <META http-equiv="PICS-Label" content='
 (PICS-1.1 "http://www.gcf.org/v2.5"
    labels on "1994.11.05T08:15-0500"
      until "1995.12.31T23:59-0000"
      for "http://w3.org/PICS/Overview.html"
    ratings (suds 0.5 density 0 color/hue 1))
 '>
  <TITLE>... название документа ...</TITLE>
</HEAD>
META и информация по умолчанию

Элемент META может использоваться для указания информации по умолчанию для документа в следующих случаях:

  • Язык сценариев по умолчанию.
  • Язык таблиц стилей по умолчанию.
  • Кодировка символов документа.

В следующем примере для документа указывается кодировка символов ISO-8859-5

<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-5">

Профили метаданных

Атрибут profile элемента HEAD указывает местоположение профиля метаданных. Значением атрибута profile является URI. Агенты пользователей могут использовать этот URI двумя способами:
  • Как глобальное уникальное имя. Агенты пользователя могут распознавать имя (не загружая в действительности профиль) и выполнять некоторые действия на базе известных соглашений для этого профиля. Например, поисковые машины могут обеспечивать интерфейс для поиска в каталогах документов HTML, где все эти документы используют один и тот же профиль для представления записей каталога.
  • Как ссылку. Агенты пользователей могут разыменовывать URI и выполнять некоторые действия на базе определений из профиля (например, авторизовать использование профиля в текущем документе HTML). В этой спецификации не определяются форматы профилей.

В этом примере используется гипотетический профиль, определяющий полезные свойства для индексирования документов. Для свойств, определяемых этим профилем - включая "author", "copyright", "keywords" и "date" -- значения устанавливаются с помощью последовательных объявлений META.

 <HEAD profile="http://www.acme.com/profiles/core">
  <TITLE>How to complete Memorandum cover sheets</TITLE>
  <META name="author" content="John Doe">
  <META name="copyright" content="&copy; 1997 Acme Corp.">
  <META name="keywords" content="corporate,guidelines,cataloging">
  <META name="date" content="1994-11-06T08:49:37+00:00">
 </HEAD>

Во время написания этой спецификации распространенной стала практика использования форматов дат, описанных в [RFC2068], раздел 3.3. Поскольку обработка этих форматов относительно сложна, мы рекомендуем авторам использовать формат даты [ISO8601]. Подробнее см. разделы об элементах INS и DEL.

Атрибут scheme позволяет авторам предоставлять агентам пользователей дополнительный контекст для корректной интерпретации метаданных. Иногда такая дополнительная информация может иметь важное значение, например, если метаданные указаны в другом формате. Например, автор может указать дату в формате "10-9-97" (неоднозначно); означает ли это 9 октября 1997 г. или 10 сентября 1997 г.? Значение атрибута scheme "Month-Date-Year" устранит неоднозначность.

В других случаях атрибут scheme может предоставлять агентам пользователей полезную, но не столь важную информацию.

Например, следующее объявление scheme поможет агентам пользователей определить, что значение свойства "identifier" - номер кода ISBN:

<META scheme="ISBN"  name="identifier" content="0-8230-2355-9">

Значения атрибута scheme зависят от свойства name и связанного профиля.

Примечание. Примером профиля является Dublin Core (см. [DCORE]). Этот профиль определяет набор рекомендуемых свойств для электронных библиографических описаний и предназначен для обеспечения интероперабельности в несопоставимых моделях описаний.

7.5 Тело документа

7.5.1 Элемент BODY

<!ELEMENT BODY O O (%block;|SCRIPT)+ +(INS|DEL) - тело документа -->
<!ATTLIST BODY
  %attrs;                              -- %coreattrs, %i18n, %events --
  onload          %Script;   #IMPLIED  -- документ загружен --
  onunload        %Script;   #IMPLIED  -- документ удален --
  >

Начальный тег: не обязателен, Конечный тег: не обязателен

Определения атрибутов

background = uri [CT]
Нежелателен. Значение этого атрибута - URI, указывающий на изображение. Это изображение является фоном (для визуальных браузеров).
text = color [CI]
Нежелателен. Этот атрибут устанавливает цвет текста (для визуальных браузеров).
link = color [CI]
Нежелателен. Этот атрибут устанавливает цвет текста гипертекстовых ссылок, по которым Вы не переходили (для визуальных браузеров).
vlink = color [CI]
Нежелателен. Этот атрибут устанавливает цвет текста ссылок, по которым Вы переходили (для визуальных браузеров).
alink = color [CI]
Нежелателен. Этот атрибут устанавливает цвет текста ссылок, когда они выбраны пользователем (для визуальных браузеров).

Атрибуты, определяемые в любом другом месте

  • id, class (идентификаторы в пределах документа)
  • lang (информация о языке), dir (направление текста)
  • title (заголовок элемента)
  • style (встроенная информация о стиле)
  • bgcolor (цвет фона)
  • onload, onunload (внутренние события)
  • onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события)

В теле документа располагается содержание документа. Содержимое может представляться агентом пользователя несколькими способами. Например, для визуальных браузеров Вы можете считать тело документа полотном, на котором отображается содержимое: текст, изображения, цвета, рисунки и т.д. Для аудиоагентов пользователей оно может произноситься. Поскольку предпочтительным способом задания представления документов теперь являются таблицы стилей, атрибуты представления в теге BODY являются нежелательными.

ПРИМЕР НЕЖЕЛАТЕЛЬНОГО ИСПОЛЬЗОВАНИЯ:
В следующем фрагменте кода HTML показано использование нежелательного атрибута. Он устанавливает белый цвет фона, черный цвет текста и красный цвет гиперссылок изначально, цвет фуксии при активизации ссылок и коричневый для ссылок, по которым Вы переходили.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
   "http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD>
 <TITLE>Динамика популяции</TITLE>
</HEAD>
<BODY bgcolor="white" text="black"
  link="red" alink="fuchsia" vlink="maroon">
  ... тело документа...
</BODY>
</HTML>

Используя таблицы стилей, того же эффекта можно достичь следующим образом:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
   "http://www.w3.org/TR/REC-html40/strict.dtd">
<HTML>
<HEAD>
 <TITLE>Динамика популяции</TITLE>
 <STYLE type="text/css">
  BODY { background: white; color: black}
  A:link { color: red }
  A:visited { color: maroon }
  A:active { color: fuchsia }
 </STYLE>
</HEAD>
<BODY>
  ... тело документа...
</BODY>
</HTML>

Использование внешних (связываемых) таблиц стилей обеспечивает гибкость при изменении представления без пересмотра источника документа HTML:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
   "http://www.w3.org/TR/REC-html40/strict.dtd">
<HTML>
<HEAD>
 <TITLE>Динамика популяции</TITLE>
 <LINK rel="stylesheet" type="text/css" href="smartstyle.css">
</HEAD>
<BODY>
  ... тело документа...
</BODY>
</HTML>

Кадры и тела документов HTML. В документах, содержащих кадры, элемент BODY заменяется элементом FRAMESET. Подробнее см. в разделе о кадрах.

7.5.2 Идентификаторы элементов: атрибуты id and class

Определения атрибутов

id = name [CS]
Этот атрибут назначает элементу имя. Имя в пределах документа должно быть уникальным.
class = cdata-list [CS]
Этот атрибут назначает элементу имя класса или набор имен классов. Одно и то же имя или имена классов могут быть назначены любому числу элементов. Несколько имен классов должны быть разделены пробелами.
Атрибут id назначает элементу уникальный идентификатор (который может проверяться синтаксическим анализатором SGML). Например, следующие абзацы распознаются по значениям их атрибутов id:

<P id="myparagraph"> Этот абзац имеет уникальное имя.</P>
<P id="yourparagraph"> Этот абзац тоже имеет уникальное имя.</P>

Атрибут id имеет в HTML несколько ролей:

  • Способ выбора таблицы стиля.
  • Назначение цели (якорь) для гипертекстовых ссылок.
  • Средство ссылки на определенный элемент сценария.
  • Имя объявленного объекта OBJECT.
  • В целях обработки агентами пользователей (например. для полей идентификации при извлечении данных из страниц HTML в базу данных, преобразовании документов HTML в другие форматы и т.д.).

Атрибут class, с другой стороны, назначает одно или несколько имен классов элементу; при этом элемент может называться принадлежащим к этим классам. Имя класса может использоваться несколькими экземплярами элемента. Атрибут class имеет в HTML несколько ролей:

  • Способ выбора таблицы стиля (когда автор хочет назначить информацию о стиле набору элементов).
  • Для общей обработки агентами пользователей.

Далее элемент exampleSPAN используется вместе с атрибутами id и class для пометки сообщений документа. Сообщения отображаются в английской и русской версиях.

<!-- английские сообщения -->
<P><SPAN id="msg1" class="info" lang="en">Variable declared twice</SPAN>
<P><SPAN id="msg2" class="warning" lang="en">Undeclared variable</SPAN>
<P><SPAN id="msg3" class="error" lang="en">Bad syntax for variable name</SPAN>

<!-- русские сообщений -->
<P><SPAN id="msg1" class="info" lang="fr">Переменная объявлена дважды</SPAN>
<P><SPAN id="msg2" class="warning" lang="fr">Переменная не объявлена</SPAN>
<P><SPAN id="msg3" class="error" lang="fr">Синтаксическая ошибка в имени переменной</SPAN>

Следующие правила стиля CSS сообщат агентам пользователя о необходимости отображения информации зеленым цветом, предупреждений - желтым, а сообщений об ошибках - красным:

SPAN.info    { color: green }
SPAN.warning { color: yellow }
SPAN.error   { color: red }

Помните, что русской "msg1" и английское "msg1" не могут отображаться в одном документе, поскольку они используют одно и то же значение атрибута id. Авторы могут извлечь дальнейшую пользу, используя атрибут id для усовершенствования представления отдельных сообщений, указания их в качестве целей (якорей) и т.д.

Почти каждому элементу HTML может быть назначен идентификатор и информация о классе.

Предположим, мы пишем документ о языке программирования. Этот документ должен включать ряд отформатированных примеров. Для форматирования примеров мы используем элемент PRE. Мы также назначаем цвет фона (зеленый) всем экземплярам элемента PRE, принадлежащим классу "example".

<HEAD>
<TITLE>... название документа...</TITLE>
<STYLE type="text/css">
PRE.example { background : green }
</STYLE>
</HEAD>
<BODY>
<PRE class="example" id="example-1">
...код примера...
</PRE>
</BODY>

Установив атрибут id для этого примера, мы можем (1) создать на него гиперссылку и (2) использовать информацию о стиле, отличную от определенной в таблицы, для одного экземпляра информации о стиле.

Примечание. Атрибут id использует одно пространство имен с атрибутом name, если он используется для имен якорей. Подробнее см. в разделе о якорях с id.

7.5.3 Элементы уровня блока и встроенные элементы

Некоторые элементы HTML, которые могут присутствовать внутри тега BODY, называются элементами "уровня блока", в то время как другие - "встроенными" (также называемыми элементами "уровня текста"). Разница между ними описана ниже:

Модель содержимого
Обычно элементы уровня блока могут содержать встроенные элементы и другие элементы уровня блока. Обычно встроенные элементы могут содержать только данные и другие встроенные элементы. Этому структурному различию свойственна идея о том, что элементы блока создают "большие" структуры, чем встроенные элементы.
Форматирование
По умочланию элементы уровня блока форматируются иначе, чем встроенные элементы. Обычно элементы уровня блока начинаются с новой строки, а встроенные элементы - нет. Информацию о пробелах, переносах строки и форматировании блоков см. в разделе о тексте.
Направление
По техническим причинам, затрагивающим алгоритм двунаправленного текста [UNICODE], элементы уровня блока и встроенные элементы различаются способами наследования информации о направлении. Подробнее см. в разделе о наследовании направления текста.

Таблицы стилей обеспечивают средства задания отображения произвольных элементов, включая и то, генерируется ли элемент как блочный или встроенный. В некоторых случаях, например, в случае встроенного стиля для элементов списка, это может быть полезным, но вообще говоря, авторам следует избегать такого переопределения интерпретации элементов языка HTML.

Изменение традиционных выражений представления для элементов уровня блока и встроенных элементов влияет на алгоритм двунаправленного текста. Подробнее см. раздел о влиянии таблиц стилей на двунаправленность.

7.5.4 Группировка элементов: элементы DIV и SPAN

<!ELEMENT DIV - - (%flow;)*            -- общий контейнер языка/стиля -->
<!ATTLIST DIV
  %attrs;                              -- %coreattrs, %i18n, %events --
  >
<!ELEMENT SPAN - - (%inline;)*         -- общий контейнер языка/стиля -->
<!ATTLIST SPAN
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

Начальный тег: обязателен, Конечный тег: обязателен

Определения атрибутов

href = uri [CT]
Этот атрибут указывает ресурс, предоставляющий дополнительную информацию о содержимом элемента DIV или SPAN.

Атрибуты, определяемые в любом другом месте

  • id, class (идентификаторы в пределах документа)
  • lang (информация о языке), dir (направление текста)
  • title (заголовок элемента)
  • style (встроенная информация о стиле information)
  • align (выравнивание)
  • onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события)

Элементы DIV и SPAN вместе с атрибутами id и class обеспечивают общий механизм добавления в документы структуры. Эти элементы определяют встраиваемую информацию (SPAN) или информацию уровня блока (DIV), но не налагают никаких других выражений для представления контекста. Таким образом, авторы могут использовать эти элементы с таблицами стилей, атрибутами lang и т.д..

Предположим, Вы хотите сгенерировать документ в формате HTML на основе базы данных информации о клиентах. Поскольку HTML не включает элементов для идентификации таких объектов как "клиент", "номер телефона", "адрес электронной почты" и т.д., мы используем элементы DIV и SPAN для достижения нужных эффектов структуры и представления. Для структурирования информации мы могли использовать элемент TABLE следующим образом:

<!-- Пример данных из базы данных о клиентах: -->
<!-- Имя: Stephane Boyera, Тел.: (212) 555-1212, Email: sb@foo.org -->

<DIV id="client-boyera" class="client">
<P><SPAN class="client-title">Информация о клиенте:</SPAN>
<TABLE class="client-data">
<TR><TH>Фамилия:<TD>Boyera</TR>
<TR><TH>Имя:<TD>Stephane</TR>
<TR><TH>Тел:<TD>(212) 555-1212</TR>
<TR><TH>Email:<TD>sb@foo.org</TR>
</TABLE>
</DIV>

<DIV id="client-lafon" class="client">
<P><SPAN class="client-title">Информация о клиенте:</SPAN>
<TABLE class="client-data">
<TR><TH>Фамилия:<TD>Lafon</TR>
<TR><TH>Имя:<TD>Yves</TR>
<TR><TH>Тел:<TD>(617) 555-1212</TR>
<TR><TH>Email:<TD>yves@coucou.com</TR>
</TABLE>
</DIV>

Затем мы легко сможем добавить объявление таблицы стиля для настройки представления этих записей.

Другой пример см. в разделе об атрибутах class и id.

Визуальные агенты пользователей обычно помещают символ перевода строки перед и после элементов DIV, например:

<P>ааааааааа<DIV>ббббббббб</DIV><DIV>ввввв<P>ввввв</DIV>

что обычно генерируется как:

ааааааааа
ббббббббб
ввввв

ввввв

7.5.5 Заголовки: Элементы H1, H2, H3, H4, H5, H6

<!ENTITY % heading "H1|H2|H3|H4|H5|H6">
<!--
  Существует шесть уровней заголовков - с H1 (наиболее важный) до H6 (наименее важный).
-->

<!ELEMENT (%heading;)  - - (%inline;)* -- заголовки -->
<!ATTLIST (%heading;)
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

Начальный тег: обязателен, Конечный тег: обязателен

Атрибуты, определяемые в любом другом месте

  • id, class (идентификаторы в пределах документа)
  • lang (информация о языке), dir (направление текста)
  • title (заголовок элемента)
  • style (встроенная информация о стиле)
  • align (выравнивание)
  • onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события)

Заголовок кратко описывает содержание раздела, которому он предшествует. Информация из заголовка может использоваться агентами пользователей, например, для автоматического построения оглавления документа.

В языке HTML существует шесть уровней заголовков: H1 - наиболее важный - и H6 - наименее важный. Визуальные браузеры обычно отображают более важные заголовки более крупным шрифтом.

В следующем примере показано, как использовать элемент DIV для того, чтобы связать заголовок с последующим разделом документа. Это позволит Вам определить стиль для раздела (цвет фона, шрифт и т.д.) с использованием таблиц стилей.

<DIV class="section" id="forest-elephants" >
<H1>Лесные слоны</H1>
<P>В этом разделе мы обсуждаем менее известных лесных слонов.
...продолжение раздела...
<DIV class="subsection" id="forest-habitat" >
<H2>Ариал</H2>
<P>Лесные слоны не живут в деревьях, а среди них.
...продолжение раздела...
</DIV>
</DIV>

Эту структуру можно представить с использованием информации о стиле, например:

<HEAD>
<TITLE>... название документа ...</TITLE>
<STYLE type="text/css">
DIV.section { text-align: justify; font-size: 12pt}
DIV.subsection { text-indent: 2em }
H1 { font-style: italic; color: green }
H2 { color: green }
</STYLE>
</HEAD>

Пронумерованные разделы и ссылки
Язык HTML не генерирует номера разделов из заголовков. Это может выполняться агентами пользователей. Вскоре языки описания таблиц стилей, такие как CSS, предоставят авторам возможность управления генерацией номеров разделов (для удобства в ссылках в печатной документации, например "См. раздел 7.2").

Некоторые люди считают пропуск уровней заголовков дурным тоном. Они принимают порядок заголовков H1 H2 H1, но не принимают порядок H1 H3 H1, поскольку пропущен уровень H2.

7.5.6 Элемент ADDRESS

<!ELEMENT ADDRESS - - (%inline;)* -- информация об авторе -->
<!ATTLIST ADDRESS
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

Начальный тег: обязателен, Конечный тег: обязателен

Атрибуты, определяемые в любом другом месте

  • id, class (идентификаторы в пределах документ)
  • lang (информация о языке), dir (направление текста)
  • onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события)

Элемент ADDRESS может использоваться авторами для указания контактной информации или основной части документа, такой как форма. Этот элемент часто находится в начале или в конце документа.

Например, страница на сервере W3C, относящаяся к языку HTML, может включать следующую контактную информацию:

<ADDRESS>
<P><A href="../People/Raggett/">Dave Raggett</A>,
   <A href="../People/Arnaud/">Arnaud Le Hors</A>,
contact persons for the <A href="Activity">W3C HTML Activity</A><BR>
$Date: 1997/12/16 05:38:14 $
</ADDRESS>


Выравнивание, стили шрифтов и горизонтальные разделители в документах HTML

15 Выравнивание, стили шрифтов и горизонтальные разделители

  1. Форматирование
    1. Цвет фона
    2. Выравнивание
    3. Прикрепляемые объекты
      • Прикрепление объекта
      • Обтекание объекта текстом
  2. Шрифты
    1. Элементы, определяющие стиль шрифта: элементы TT, I, B, BIG, SMALL, STRIKE, S и U
    2. Элементы управления шрифтами: FONT и BASEFONT
  3. Разделители: элемент HR

В этом разделе спецификации обсуждаются некоторые элементы и атрибуты языка HTML, которые могут использоваться для визуального форматирования элементов. Многие из них являются нежелательными.

15.1 Форматирование

15.1.1 Цвет фона

Определение атрибутов

bgcolor = цвет [CI]
Нежелателен. Этот атрибут устанавливает цвет фона тела документа или ячеек таблицы.

Этот атрибут устанавливает цвет фона тела документа (элемент BODY) или таблицы (элементы TABLE, TR, TH, and TD). В элементе BODY могут использоваться дополнительные атрибуты для указания цвета текста.

Использование этого атрибута не рекомендуется, вместо этого следует использовать таблицы стилей.

15.1.2 Выравнивание

Выравнивать блочные элементы (таблицы, изображения, объекты, абзацы и т.д.) можно с помощью атрибута align. Хотя этот атрибут может устанавливаться для многих элементов HTML, диапазон его возможных значений в разных элементах может быть различным. Здесь обсуждается только значение атрибута align для текста.

Определения атрибутов

align = left|center|right|justify [CI]
Нежелателен. Этот атрибут задает горизонтальное выравнивание своего элемента относительно окружающего контекста. Возможные значения:
  • left: строки текста выравниваются по левому краю.
  • center: строки текста выравниваются по центру.
  • right: строки текста выравниваются по правому краю.
  • justify: строки текста выравниваются по обоим краям.

Значение по умолчанию зависит от общего направления текста. Для текста, направленного слева направо, по умолчанию используется значение align=left, я для текста, направленного справа налево - align=right.

ПРИМЕР НЕЖЕЛАТЕЛЬНОГО ИСПОЛЬЗОВАНИЯ:
В данном примере заголовок центрируется.

<H1 align="center"> How to Carve Wood </H1>

С использованием CSS, например, Вы можете достичь того же эффекта следующим образом:

<HEAD>
 <TITLE>How to Carve Wood</TITLE>
 <STYLE type="text/css">
  H1 { text-align: center}
 </STYLE>
<BODY>
 <H1> How to Carve Wood </H1>

Обратите внимание, что будут выровнены все объявления H1. Вы можете ограничить область действия стиля, установив атрибут class:

<HEAD>
 <TITLE>How to Carve Wood</TITLE>
 <STYLE type="text/css">
  H1.wood {text-align: center}
 </STYLE>
<BODY>
 <H1 class="wood"> How to Carve Wood </H1>

ПРИМЕР НЕЖЕЛАТЕЛЬНОГО ИСПОЛЬЗОВАНИЯ:
Аналогично, чтобы выровнять абзац по правому краю с помощью атрибута HTML align Вы можете записать:

<P align="right">...Текст абзаца...

а с использованием CSS:

<HEAD>
 <TITLE>How to Carve Wood</TITLE>
 <STYLE type="text/css">
  P.mypar {text-align: right}
 </STYLE>
<BODY>
 <P class="mypar">...Текст абзаца...

ПРИМЕР НЕЖЕЛАТЕЛЬНОГО ИСПОЛЬЗОВАНИЯ:
Чтобы выровнять по правому краю ряд абзацев, сгруппируйте их с помощью элемента DIV:

<DIV align="right">
 <P>...текст первого абзаца...
 <P>...текст второго абзаца...
 <P>...текст третьего абзаца...
</DIV>

С использованием CSS свойство выравнивания текста наследуется от родительского элемента, поэтому Вы можете использовать:

<HEAD>
 <TITLE>How to Carve Wood</TITLE>
 <STYLE type="text/css">
  DIV.mypars {text-align: right}
 </STYLE>
<BODY>
 <DIV class="mypars">
  <P>...текст первого абзаца...
  <P>...текст второго абзаца...
  <P>...текст третьего абзаца...
 </DIV>

Чтобы отцентрировать с использованием CSS весь документ:

<HEAD>
 <TITLE>How to Carve Wood</TITLE>
 <STYLE type="text/css">
  BODY {text-align: center}
 </STYLE>
<BODY>
 ...тело документа отцентрировано...
</BODY>

Использование элемента CENTER абсолютно эквивалентно использованию элемента DIV с атрибутом align, для которого установлено значение "center". Использование элемента CENTER нежелательно.

15.1.3 Прикрепляемые объекты

Изображения и объекты могут быть "встроенными" или прикрепляться к краю страницы, временно изменяя поля текста с учетом объекта.

Прикрепление объекта

Атрибут align для объектов, изображений, таблиц, фреймов и т.д. приводит к тому, что объект прикрепляется к левому или правому краю. Обычно прикрепляемые объекты располагаются с новой строки. Для этого атрибута могут устанавливаться следующие значения:

  • left: Объект прикрепляется к текущему левому полю. Последующий текст обтекает изображение справа.
  • right: Объект прикрепляется к текущему правому полю. Последующий текст обтекает изображение слева.

ПРИМЕР НЕЖЕЛАТЕЛЬНОГО ИСПОЛЬЗОВАНИЯ:
В следующем примере показано, как прикрепить элемент IMG к левому полю.

<IMG align="left" src="http://foo.com/animage.gif" alt="моя лодка">

Некоторые атрибуты выравнивания допускают значение "center", который не прикрепляет объект, но центрирует его относительно текущих полей. Однако для элементов P и DIV значение "center" приводит к центрированию содержимого элемента.

Обтекание объекта текстом

Другой атрибут, определенный для элемента BR, управляет обтеканием текста вокруг прикрепленных объектов.

Определения атрибутов

clear = none|left|right|all [CI]
Нежелателен. Определяет, где в визуальном браузере должна появиться следующая за переводом строки, вызванном этим элементом, строка. Этот атрибут учитывает прикрепляемые объекты (изображения, таблицы и т.д.). Возможные значения:
  • none: Следующая строка начинается обычным образом. Это значение используется по умолчанию.
  • left: Следующая строка начнется на ближайшей строке под прикрепленным объектом у левого поля.
  • right: Следующая строка начнется на ближайшей строке под прикрепленным объектом у правого поля.
  • all: Следующая строка начнется на ближайшей строке под прикрепленным объектом у любого поля.

Рассмотрим следующий визуальный сценарий, в котором обтекание текстом производится справа от изображения до разрыва строки с помощью BR:

****************  -------
|              |  -------
| изображение  |  --<BR>
|              |
****************

Если для атрибута clear установлено значение none, строка, следующая за BR, начнется сразу же за ним справа от изображения:

***************  -------
|             |  -------
| изображение |  --<BR>
|             |  ------
***************

ПРИМЕР НЕЖЕЛАТЕЛЬНОГО ИСПОЛЬЗОВАНИЯ:
Если для атрибута clear установлено значение left или all, следующая строка будет отображаться так:

***************  -------
|             |  -------
| изображение |  --<BR clear="left">
|             |
***************
-----------------

С помощью таблиц стилей Вы можете задать подобное поведение для всех концов строк для всех объектов (изображений, таблиц и т.д.), прикрепленных к левому полю. С использованием CSS Вы можете достичь этого эффекта следующим образом:

<STYLE type="text/css">
BR { clear: left }
</STYLE>

Чтобы определить такое поведение только для определенных экземпляров элемента BR, следует использовать атрибут id:

<HEAD>
...
<STYLE type="text/css">
BR.mybr { clear: left }
</STYLE>
</HEAD>
<BODY>
<P>...
***********  -------
|         |  -------
| таблица |  --<BR id="mybr">
|         |
***********
-----------------
...
</BODY>

15.2 Шрифты

Следующие элементы HTML определяют информацию о шрифтах. Хотя не все они нежелательны, рекомендуется использовать вместо них таблицы стилей.

15.2.1 Элементы, определяющие стиль шрифта: элементы TT, I, B, BIG, SMALL, STRIKE, S и U

<!ENTITY % fontstyle
 "TT | I | B | BIG | SMALL">
<!ELEMENT (%fontstyle;|%phrase;) - - (%inline;)*>
<!ATTLIST (%fontstyle;|%phrase;)
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

Начальный тег: обязателен, Конечный тег: обязателен

Атрибуты, определяемые в другом месте

  • id, class (идентификаторы в пределах документа)
  • lang (информация о языке), dir (направление текста)
  • title (заголовок элемента)
  • style (встроенная информация о стиле)
  • onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown onkeyup (внутренние события)

Представления элементов, определяющих стиль шрифта, зависит от агента пользователя. Далее приведено только информативное описание.

TT: Представляется как моноширинный шрифт (шрифт пишущей машинки).
I: Представляет курсивом.
B: Представляется полужирным шрифтом.
BIG: Представляется "крупным" шрифтом.
SMALL: Представляется "малым" шрифтом.
STRIKE и S: Нежелательны. Представляет перечеркнутым шрифтом.
U: Нежелателен. Представляется подчеркнутым шрифтом.

В следующем предложении показаны несколько типов текста:

<P><b>полужирный</b>,
<i>курсив</i>, <b><i>полужирный курсив</i></b>, <tt>моноширинный</tt> и
<big>большой</big> и <small>малый</small> текст.

Слова будут представлены следующим образом:

Пример представления различных стилей шрифтов

С использованием таблиц стилей можно достичь большего разнообразия эффектов. Чтобы задать для абзаца синий курсив с помощью CSS, запишите:

<HEAD>
<STYLE type="text/css">
P.mypar {font-style: italic; color: blue}
</STYLE>
</HEAD>
<P id="mypar">...Текст синим курсивом...

Элементы стиля шрифта должны корректно вкладываться. Представление вложенных элементов стиля зависит от агента пользователя.

15.2.2 Элементы управления шрифтами: FONT и BASEFONT

Использование элементов FONT и BASEFONT нежелательно.

Формальное определение см. в Transitional DTD.

Определения атрибутов

size = cdata [CN]
Нежелателен. Устанавливает размер шрифта. Возможные значения:
  • Целое число от 1 до 7. Устанавливает фиксированный размер шрифта, представление которого зависит от агента пользователя. Не все агенты пользователей могут представлять все семь размеров.
  • Относительное изменение размера шрифта. Значение "+1" означает на один размер больше. Значение "-3" означает шрифт на три размера меньше. Все размеры относятся к шкале от 1 до 7.
color = цвет [CI]
Нежелателен. Этот атрибут устанавливает цвет текста.
face = cdata [CI]
Нежелателен. Этот атрибут определяет список разделенных запятыми названий шрифтов, поиск которых агент пользователя должен выполнить в порядке приоритета.

Атрибуты, определяемые в другом месте

  • id, class (идентификаторы в пределах документа)
  • lang (информация о языке), dir (направление текста)
  • title (заголовок элемента)
  • style (встроенная информация о стиле)

Элемент FONT изменяет размер и цвет шрифта для текста его содержимого.

Элемент BASEFONT устанавливает базовый размер шрифта (с помощью атрибута size). Изменения размера шрифта с помощью элемента FONT производятся относительно базового размера, установленного элементом BASEFONT. Если элемент BASEFONT не используется, по умолчанию используется размер 3.

ПРИМЕР НЕЖЕЛАТЕЛЬНОГО ИСПОЛЬЗОВАНИЯ:
В следующем примере показана разница между семью размерами шрифтов, устанавливаемых с помощью элемента FONT:

<P><font size=1>size=1</font>
<font size=2>size=2</font>
<font size=3>size=3</font>
<font size=4>size=4</font>
<font size=5>size=5</font>
<font size=6>size=6</font>
<font size=7>size=7</font>

Это может представляться следующим образом:

Пример представления различных размером шрифтов

Далее показан пример установки относительного размера шрифта с использованием базового размера 3:

Пример представления различных размером шрифтов с использованием basefont

Базовый размер шрифта не применяется к заголовкам, если они не изменены с помощью элемента FONT с указанием относительного размера шрифта.

15.3 Разделители: элемент HR

<!ELEMENT HR - O EMPTY - горизонтальный разделитель -->
<!ATTLIST HR
  %coreattrs;                          -- id, class, style, title --
  %events;
  >

Начальный тег: обязателен, Конечный тег: запрещен

Определения атрибутов

align = left|center|right [CI]
Нежелателен. Этот атрибут определяет горизонтальное выравнивание разделителя относительно окружающего контекста. Возможные значения:
  • left: разделитель выровнен по левому краю.
  • center: разделитель выровнен по центру.
  • right: разделитель выровнен по правому краю.

По умолчанию используется align=center.

noshade [CI]
Нежелателен. Если этот атрибут установлен, он предлагает агенту пользователю представлять разделитель сплошным цветом, а не обычным двухцветным стилем.
size = пикселы [CI]
Нежелателен. Этот атрибут задает высоту разделителя. Значение по умолчанию зависит от агента пользователя.
width = length [CI]
Нежелателен. Этот атрибут задает ширину разделителя. По умолчанию используется 100%, т.е. вся ширина страницы.

Атрибуты, определяемые в другом месте

  • id, class (идентификаторы в пределах документа)
  • lang (информация о языке), dir (направление текста)
  • title (заголовок элемента)
  • style (встроенная информация о стиле)
  • onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события)
  • align (выравнивание)

Элемент HR приводит к генерации горизонтального разделителя визуальными агентами пользователей.

Высота пустого пространства между разделителем и текстом зависит от агента пользователя.

ПРИМЕР НЕДОПУСТИМОГО ИСПОЛЬЗОВАНИЯ:
В этом примере разделители центрируются, а их размер устанавливается в половину ширины между полями. Верхний разделитель имеет толщину по умолчанию, а для нижнего установлена толщина 5 пикселов. Нижний разделитель должен представляться сплошным цветом без тени:

<HR width="50%" align="center">
<HR size="5" width="50%" align="center">
<HR noshade size="5" width="50%" align="center">

Эти разделители могут представляться следующим образом:

Пример представления различных горизонтальных разделителей


Введение в HTML 4.0

2 Введение в HTML 4.0

  1. Что такое World Wide Web?
    1. Введение в URI
    2. Идентификаторы фрагментов
    3. Относительные URI
  2. Что такое HTML?
    1. Краткая история HTML
  3. HTML 4.0
    1. Интернационализация
    2. Доступность
    3. Таблицы
    4. Составные документы
    5. Таблицы стилей
    6. Скрипты
    7. Печать
  4. Создание документов в формате HTML 4.0
    1. Разделение структуры и представления
    2. Универсальность доступа к Web
    3. Помощь агентам пользователей в последовательном создании изображения

2.1 Что такое World Wide Web?

World Wide Web (Web) - это сеть информационных ресурсов. Для того, чтобы сделать эти ресурсы доступными наиболее широкой аудитории, в Web используются три механизма:

  1. Единая схема наименования для поиска ресурсов в Web (например, URI).
  2. Протоколы для доступа к именованным ресурсам через Web (например, HTTP).
  3. Гипертекст для простого перемещения по ресурсам (например, HTML).

Связи между этими тремя механизмами становятся очевидными по прочтении этой спецификации.

2.1.1 Введение в URI

Каждый ресурс в Web - документ HTML, изображение, видеоклип, программа и т.д. - имеет адрес, который может быть закодирован с помощью универсального идентификатора ресурсов (Universal Resource Identifier), или URI.

URI обычно состоят из трех частей:

  1. Схема наименования механизма, используемого для доступа к ресурсу.
  2. Имя машины, на которой располагается ресурс.
  3. Имя собственно ресурса, зачданное в виде пути.

Рассмотрите URI этой спецификации HTML на сервере W3C:

   http://www.w3.org/TR/PR-html4/cover.html

Этот URI может читаться следующим образом: этот документ можно получить по протоколу HTTP (см. [RFC2068]), он располагается на машине www.w3.org, путь к этому документу - "/TR/PR-html4/cover.html". Кроме того, в документах в формате HTML Вы можете увидеть схемы "mailto" для электронной почты и "ftp" для протокола FTP.

Вот еще один пример URI. Он относится к почтовому ящику пользователя:

   ...текст...
   Комментарии отправляйте <A href="mailto:joe@someplace.com">Джо Кулу</A>.

Примечание. Большинство читателей уже знакомо с термином "URL", но не знает термина "URI". URL образуют подмножество более общей схемы наименования URI.

2.1.2 Идентификаторы фрагментов

Некоторые URI указывают на местоположение внутри ресурса. Этот тип URI заканчивается символом "#", за которым следует указатель (идентификатор фрагмента). Например, следующий URI указывает на фрагмент с именем section_2:

http://somesite.com/html/top.html#section_2

2.1.3 Относительные URI

Относительный URI не содержит информации о схеме наименования. Путь в нем указывает на ресурс на машине, на которой находится текущий документ. Относительные URI могут содержать компоненты относительного пути (например, ".." означает один уровень выше в иерархии) и идентификаторы фрагментов.

Относительные URI приводятся к полным URI с помощью базового URI. В качестве примера приведения относительного URI предположим, что у нас имеется базовый URI "http://www.acme.com/support/intro.html". Относительный URI в следующей ссылке:

   <A href="suppliers.html">Suppliers</A>

будет преобразован в полный URI "http://www.acme.com/support/suppliers.html", а относительный URI в следующем фрагменте

   <IMG src="../icons/logo.gif" alt="logo">

будет преобразован в полный URI "http://www.acme.com/icons/logo.gif".

В HTML URI используются для:

  • ссылки на другие документы или ресурсы (см. элементы A и LINK).
  • ссылки на внешние таблицы стилей или скрипты (см. элементы LINK и SCRIPT).
  • включения в страницу изображений, объектов или апплетов (см. элементы IMG, OBJECT, APPLET и INPUT).
  • создания изображений-карт (см. элементы MAP и AREA).
  • отправки форм (см. FORM).
  • создания документов с использованием кадров (см. элементы FRAME и IFRAME).
  • ссылок на внешние источники (см. элементы Q, BLOCKQUOTE, INS и DEL).
  • ссылок на соглашения о метаданных, описывающих документ (см. элемент HEAD).

Подробнее об URI см. в разделе о типах URI.

2.2 Что такое HTML?

Чтобы представить информацию для глобального использования, нужен универсальный язык, который понимали бы все компьютеры. Языком публикации, используемым в World Wide Web, является HTML (HyperText Markup Language - язык разметки гипертекстов).

HTML дает авторам средства для:

  • публикации электронных документов с заголовками, текстом, таблицами, списками, фотографиями и т.д.
  • загрузки электронной информации с помощью щелчка мыши на гипертекстовой ссылке.
  • разработки форм для выполнения транзакций с удаленными службами, для использования в поиске информации, резервировании, заказе продуктов и т.д.
  • включения электронных таблиц, видеоклипов, звуковых фрагментов и других приложений непосредственно в документы.

2.2.1 Краткая история HTML

Язык HTML был разработан Тимом Бернерс-Ли во время его работы в CERN и распространен браузером Mosaic, разработанным в NCSA. В 1990-х годах он добился особенных успехов благодаря быстрому росту Web. В это время HTML был расширен и дополнен. В Web очень важно использование одних и тех же соглашений HTML авторами Web-страниц и производителями. Это явилось причиной совместной работы над спецификациями языка HTML.

HTML 2.0 (ноябрь 1995, см. [RFC1866]) был разработан под эгидой Internet Engineering Task Force (IETF) для упорядочения общепринятых положений в конце 1994 года. HTML+ (1993) и HTML 3.0 (1995, см. [HTML30]) - это более богатые версии языка HTML. Несмотря на то, что в обычных дискуссиях согласие никогда не было достигнуто, эти черновики привели к принятию ряда новых свойств. Усилия Рабочей группы World Wide Web Consortium по HTML в упорядочении общепринятых положений в 1996 привели к версии HTML 3.2 (январь 1997, см. [HTML32]). Изменения по отношению к HTML 3.2 перечислены в Приложении А

Большинство людей признают, что документы HTML должны работать в различных браузерах и на разных платформах. Достижение совместимости снижает расходы авторов, поскольку они могут разрабатывать только одну версию документа. В противном случае возникает еще больший риск, что Web будет представлять собой смесь личных несовместимых форматов, что в конечном счете приведет к снижению коммерческого потенциала Web для всех участников.

В каждой версии HTML предпринималась попытка отразить все большее число соглашений между работниками и пользователями этой индустрии, чтобы усилия авторов не были потрачены впустую, а их документы не стали бы нечитаемыми в короткий срок.

Язык HTML разрабатывался с той точки зрения, что все типы устройств должны иметь возможность использовать информацию в Web: персональные компьютеры с графическими дисплеями с различным разрешением и числом цветов, сотовые телефоны, переносные устройства, устройства для вывода и ввода речи, компьютеры с высокой и низкой частотой и т.д.

2.3 HTML 4.0

В HTML 4.0 вводятся механизмы таблиц стилей, скриптов, кадров, внедрения объектов, улучшенная поддержка разных направлений письма и направления справа налево, таблицы с большим количеством возможностей и новые свойства форм, обеспечивая лучшие возможности доступа для людей с физическими недостатками.

2.3.1 Интернационализация

Эта версия HTML разработана с помощью экспертов в области интернационализации, так что документы можно писать на любом языке и легко передавать их по всему миру. Это достигается за счет использования [RFC2070], относящегося к интернационализации HTML.

Важным шагом стало принятие стандарта ISO/IEC:10646 (см. [ISO10646]) в качестве набора символов для документов HTML. Это наиболее содержательный стандарт в мире, в котором решены вопросы представления национальных символов, направления письма, пунктуации и других языковых вопросов.

HTML теперь предоставляет лучшую поддержку различных языков в одном документе. Это обеспечивает более эффективное индексирование документов для поисковых машин, типографию высшего качества, преобразование текста в речь, более удобные переносы и т.д.

2.3.2 Доступность

Поскольку сообщество Web растет, и возможности и умения его членов различаются, очень важно, чтобы основные технологии соответствовали потребностям. Язык HTML разработан так, чтобы сделать Web-страницы более доступными для пользователей с физическими недостатками. В HTML 4.0 имеются следующие дополнения, продиктованные соображениями доступности:

  • усилено разделение структуры и представления документа, что побуждает использовать таблицы стилей вместо элементов и атрибутов представления языка HTML.
  • улучшены формы, включена возможность назначения клавиш доступа, возможность семантической группировки управляющих элементов формы, семантической группировки вариантов в тэге SELECT и активные метки.
  • добавлена возможность разметки текстового описания включенного объекта (с помощью элемента OBJECT).
  • введен новый механизм действия изображений-карт на стороне клиента (элемент MAP), который позволяет авторам интегрировать изображения и текстовые ссылки.
  • альтернативный текст для изображений, включаемых с помощью элемента IMG, обязателен.
  • добавлена поддержка атрибутов title и lang во всех элементах.
  • добавлена поддержка элементов ABBR и ACRONYM.
  • более широкий диапазон целевых устройств (телетайп, шрифт Бройля и т.д.) для использования в таблицах стилей.
  • улучшены таблицы, включена поддержка заголовков, групп столбцов и механизмов для упрощения невизуального представления документа.
  • добавлены длинные описания таблиц, изображений, кадров и т.д.

Авторы, разрабатывающие страницы с учетом доступности, получат не только эту возможность, но также и некоторые другие: хорошо разработанные документы HTML с разделенными структурой и представлением будут легче адаптироваться к новым технологиям.

Примечание. Подробнее о разработке доступных документов HTML Вы можете прочесть в [WAIGUIDE].

2.3.3 Таблицы

Новая модель таблиц в HTML основана на [RFC1942]. Теперь авторы имеют большую власть над структурой и компоновкой таблицы (например, группы столбцов). Возможность дизайнеров рекомендовать ширину столбцов позволяет агентам пользователей отображать данные таблицы постепенно (по мере получения) и не ждать всю таблицу до создания изображения.

Примечание. Во время написания этого документа некоторые средства разработки документов в формате HTML широко использовали для форматирования страниц таблицы, что вызывало проблемы совместимости.

2.3.4 Составные документы

В HTML теперь имеется стандартный механизм для внедрения объектов и приложений в документы HTML. Элемент OBJECT (а также более специфичные элементы, его преемники, IMG и APPLET) обеспечивает механизм включения в документ изображений, видеофайлов, звуковых файлов, математических выражений, специализированных приложений и других объектов. Он также позволяет авторам указывать иерархию или альтернативный способ создания изображения для агентов пользователей, не поддерживающих указанный способ создания изображения.

2.3.5 Таблицы стилей

Таблицы стилей упрощают разметку HTML и существенно снижают участие языка HTML в представлении документа. Они предоставляют как авторам, так и пользователям возможность управлять представлением документов - шрифтами, выравниванием, цветами и т.д.

Информацию о стиле можно указать для отдельных элементов или групп элементов, в документе HTML или во внешних таблицах стилей.

Механизмы связи таблиц стилей с документами не зависят от языка таблиц стилей.

До появления таблиц стилей возможности управления созданием изображения у авторов были ограничены. В HTML 3.2 был включен ряд атрибутов и элементов для управления выравниванием, размером шрифта и цветом текста. Авторы также использовали для компоновки страниц таблицы и изображения. Поскольку на обновление браузеров у пользователей уйдет довольно долгое время, эти средства еще будут использоваться в течение какого-то времени. Однако поскольку таблицы стилей обеспечивают более мощные механизмы представления, World Wide Web Consortium существенно сократит число элементов и атрибутов представления в HTML. В этой спецификации элементы и атрибуты, которые могут быть впоследствии исключены, помечены как "нежелательные". Они сопровождаются примерами полдостижения того же эффекта с помощью других элементов или таблиц стилей.

2.3.6 Скрипты

С помощью скриптов авторы могут создавать динамичные Web-страницы (например, "интеллектуальные формы", изменяющиеся по мере заполнения их пользователем) и использовать HTML как средство построения сетевых приложений.

Механизмы, обеспечивающие включение скриптов в документы HTML, не зависят от языка скриптов.

2.3.7 Печать

Иногда авторы хотят упростить для пользователей печать текущего документа. Если документ является частью другого документа, отношения между ними можно описать с помощью элемента HTML LINK или языка описания ресурсов (Resource Description Language - RDF) W3C (см. [RDF]).

2.4 Создание документов в формате HTML 4.0

Авторам и разработчикам для работы с HTML 4.0 рекомендуется ознакомиться со следующими общими принципами.

2.4.1 Разделение структуры и представления

HTML происходит из SGML, который всегда был языком определения структурной разметки. По мере развития HTML все большее количество его элементов и атрибутов для представления заменяется другими механизмами, в частности, таблицами стилей. Опыт показывает, что отделение структуры документа от аспектов его представления снижает стоимость обслуживания широкого диапазона платформ, носителей и т.д. и упрощает изменение документов.

2.4.2 Универсальность доступа к Web

Чтобы сделать свой Web-сервер доступным для всех пользователей, особенно для пользователей с физическими недостатками, авторы должны предполагать, как их документы могут отображаться на различных платформах: речевых браузерах, программах чтения азбуки Бройля и т.д. Мы не рекомендуем авторам ограничивать творческий процесс, но рекомендуем предусматривать альтернативные методы подачи информации. HTML предлагает ряд таких механизмов (например, атрибут alt, атрибут accesskey и т.д.)

Авторам также следует иметь в виду, что к их документам могут обращаться пользователи с другой конфигурацией компьютеров. Для корректной интерпретации документов авторам следует включать в свои документы информацию о языке и направлении письма в тексте, о кодировке документа и прочую подобную информацию.

2.4.3 Помощь агентам пользователей в последовательном создании изображений

При тщательной разработке таблиц и использовании новых возможностей HTML 4.0 авторы могут ускорить отображение документов агентами пользователей. Авторы могут прочесть здесь о том, как создавать таблицы для последовательного представления (см. элемент TABLE). Разработчики могут получить информацию об алгоритмах последовательного представления в замечаниях о таблицах в приложении.


Справочная информация SGML для HTML

19 Справочная информация SGML для HTML

  1. Проверка корректности документа
  2. Пример каталога SGML

В следующих разделах содержится формальное определение SGML языка HTML 4.0. Сюда входят объявление SGML, определение типа документа (Document Type Definition, DTD) и ссылки на комбинации символов, а также пример каталога SGML.

Эти файлы можно также получить в формате ASCII:

DTD по умолчанию (Default DTD):
http://www.w3.org/TR/REC-html40/strict.dtd
Переходное DTD (Transitional DTD):
http://www.w3.org/TR/REC-html40/loose.dtd
DTD с фреймами (Frameset DTD):
http://www.w3.org/TR/REC-html40/frameset.dtd
Объявление SGML:
http://www.w3.org/TR/REC-html40/HTML4.decl
Файлы определения комбинаций:
http://www.w3.org/TR/REC-html40/HTMLspecial.ent
http://www.w3.org/TR/REC-html40/HTMLsymbol.ent
http://www.w3.org/TR/REC-html40/HTMLlat1.ent
Пример каталога:
http://www.w3.org/TR/REC-html40/HTML4.cat

19.1 Проверка корректности документа

Многие авторы проверяют свои документы в ограниченном наборе браузеров, считая, что, если эти браузеры могут представить их документ, то документ является допустимым. К сожалению, это весьма неэффективное средство проверки документов, поскольку браузеры разработаны так, чтобы поддерживать и некорректные документы, представляя их настолько хорошо, насколько это возможно.

Для проверки корректности следует проверять документы с помощью грамматического анализатора SGML типа nsgmls (см. [SP]), чтобы убедиться в их соответствии HTML 4.0 DTD. Если объявление типа Вашего документа включает URI, а синтаксический анализатор SGML поддерживает такой тип системных идентификаторов, он получит DTD прямо. В противном случае Вы можете использовать примерный каталог SGML. Предполагается, что DTD сохранено в виде файла "strict.dtd", а комбинации находятся в файлах "HTMLlat1.ent", "HTMLsymbol.ent" и "HTMLspecial.ent". В любом случае убедитесь, что синтаксический анализатор SGML поддерживает Unicode. Подробнее см. в документации по утилите для проверки корректности.

Помните, что несмотря на то, что такая проверка полезна и настоятельно рекомендуется, она не гарантирует полного соответствия документа спецификации HTML 4.0. Причина заключается в том, что синтаксический анализатор SGML использует только данное DTD SGML, в котором не отражены все аспекты корректного документа HTML 4.0. В частности, синтаксический анализатор SGML гарантирует корректность синтаксиса, структуры, списка элементов и их атрибутов. Но он не может отследить, например, такие ошибки как установка недопустимого значения атрибута width элемента IMG (например, "foo" или "12.5"). Хотя в данной спецификации значение этого атрибута ограничивается только "целыми числами, представляющими длину в пикселах", в DTD оно определено только как тип CDATA, для которого допустимы любые значения. Проверить полностью соответствие HTML 4.0 может только специальная программа.

Тем не менее, такая проверка все равно настоятельно рекомендуется, поскольку она позволяет обнаружить большой спектр ошибок.

19.2 Пример каталога SGML

В этот каталог включаются заменяющие директивы, гарантирующие, что для обрабатывающего программного обеспечения, такого как nsgmls, общие идентификаторы будут иметь приоритет над системными. Это означает, что пользователи не обязательно должны быть подключены к Web при загрузке системных идентификаторов на базе URI.

OVERRIDE YES

PUBLIC "-//W3C//DTD HTML 4.0//EN" strict.dtd
PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" loose.dtd
PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN" frameset.dtd
PUBLIC "-//W3C//ENTITIES Latin1//EN//HTML" HTMLlat1.ent
PUBLIC "-//W3C//ENTITIES Special//EN//HTML" HTMLspecial.ent
PUBLIC "-//W3C//ENTITIES Symbols//EN//HTML" HTMLsymbol.ent


Ссылки в документах HTML

12 Ссылки

  1. Введение в ссылки и якоря
    1. Переход к ресурсу, на который указывает ссылка
    2. Другие отношения ссылок
    3. Задание якорей и ссылок
    4. Заголовки ссылок
    5. Интернационализация и ссылки
  2. Элемент A
    1. Синтаксис имен якорей
    2. Вложенные ссылки недопустимы
    3. Якоря с атрибутом id
    4. Недоступные и неопределяемые ресурсы
  3. Отношения документов: элемент LINK
    1. Прямые и обратные ссылки
    2. Ссылки и внешние таблицы стилей
    3. Ссылки и поисковые машины
  4. Информация о пути: элемент BASE
    1. Разрешение относительных URI

12.1 Введение в ссылки и якоря

HTML предлагает множество условных оборотов для текстовых и структурированных документов, но что отличает его от большинства других языков разметки - его возможности разметки гипертекста и интерактивных документов. В этом разделе вводится понятие ссылки (или гиперссылки или ссылки Web), основной гипертекстовой конструкции. Ссылки связывают один ресурс Web с другим. Несмотря на простоту, ссылки стали основным залогом успеха Web.

Ссылка имеет два конца - называемых anchors -- и направление. Ссылка начинается в "исходном" anchor (источнике) и указывает на "целевой" anchor, который может быть любым ресурсом Web (например, изображением, видеоклипом, звуковым файлом, программой, документом HTML, элементом в документе HTML и т.д.).

12.1.1 Переход к ресурсу, на который указывает ссылка

По умолчанию со ссылкой связана загрузка другого ресурса Web. Это поведение достигается обычно путем выбора ссылки (например, с помощью щелчка мыши, ввода с клавиатуры и т.д.).

В следующем HTML-фрагменте содержится две ссылки, у одной целевым anchor является документ HTML с именем "chapter2.html", а у второй целевой anchor - изображение в формате GIF, расположенное в файле "forest.gif":

<BODY>
...какой-то текст...
<P>Подробнее см. в <A href="chapter2.html">главе два</A>.
См. также <A href="../images/forest.gif">карту леса.</A>
</BODY>

Путем активизации этих ссылок (с помощью щелчка мыши, ввода с клавиатуры, голосовых команд и т.д.) пользователи могут перейти к этим ресурсам. Обратите внимание, что атрибут href в каждом исходном anchor указывает адрес целевого anchor с использованием URI.

Целевой anchor ссылки может быть элементом в документе HTML. Целевому anchor должно даваться имя и адрес URI, адресующий этот anchor, Должен содержать это имя в качестве идентификатора фрагмента.

Целевые anchors в документах HTML могут указываться с помощью элемента A (именующего его с помощью атрибута name) или с помощью любого другого элемента (именующего с помощью атрибута id).

Таким образом, например, автор может создавать оглавление, элементы Которого являются ссылками на элементы заголовков H2, H3 и т.д. в том же документе. Используя элемент A для создания целевых anchors, можно записать:

<H1>Содержание;/H1>
<P><A href="#section1">Введение</A><BR>
<A href="#section2">Предыстория</A><BR>
<A href="#section2.1">Более конкретные заметки</A><BR>
...продолжение содержания...
...тело документа...
<H2><A name="section1">Введение</A></H2>
...раздел 1...
<H2><A name="section2">Предыстория</A></H2>
...раздел 2...
<H3><A name="section2.1">Более конкретные заметки</A></H3>
...раздел 2.1...

Этого же эффекта можно достигнуть, сделав якорями сами элементы заголовка:

<H1>Содержание</H1>
<P><A href="#section1">Введение</A><BR>
<A href="#section2">Предыстория</A><BR>
<A href="#section2.1">Более конкретные заметки</A><BR>
...продолжение содержания...
...тело документа...
<H2 id="section1">Введение</H2>
... раздел 1...
<H2 id="section2">Предыстория</H2>
... раздел  2...
<H3 id="section2.1">Более конкретные заметки</H3>
...раздел 2.1...

12.1.2 Другие отношения ссылок

Наиболее часто сейчас ссылки используются для загрузки других ресурсов Web, как показано в предыдущих примерах. Однако авторы могут помещать в свои документы ссылки, выражающие иные отношения между ресурсами, чем просто "использование ссылки для Просмотра связанного ресурса". Для ссылок, выражающих другие типы отношений, В исходном якоре указываются один или более типов ссылок.

Роли ссылок, определяемых элементом A или LINK указываются с помощью атрибутов rel и rev.

Например, ссылки, определяемые элементом LINK, могут описывать положение документа в последовательности документов. В следующем примере ссылка в документе "Глава 5" указывает на предыдущую и последующую главы:

<HEAD>
...другая заголовочная информация...
<TITLE>Глава 5</TITLE>
<LINK rel="prev" href="chapter4.html">
<LINK rel="next" href="chapter6.html">
</HEAD>

Тип первой ссылки - "prev", второй - "next" (два из ряда распознаваемых типов ссылок). Ссылки, задаваемые элементов LINK, не генерируются с содержимым документа, хотя агенты пользователей могут отображать их различными способами (например, в виде средств перехода).

Даже если они не используются для перехода, эти ссылки могут интерпретироваться интересными способами. Например, агент пользователя, выполняющий печать ряда документов в формате HTML в виде одного документа, может использовать эту информацию для формирования последовательного линейного документа. Дальнейшая информация об использовании ссылок для поисковых систем приведена ниже.

12.1.3 Задание якорей и ссылок

Хотя некоторые элементы и атрибуты языка HTML создают ссылки на другие ресурсы (например, элемент IMG, элемент FORM и т.д.), в этой главе обсуждаются ссылки и якоря, создаваемые элементами LINK и A. Элемент LINK может присутствовать только в заголовке документа. Элемент A может присутствовать только в теле документа.

Если для элемента A установлен атрибут href, этот элемент определяет исходный якорь для ссылки, которая может активизироваться пользователем для загрузки ресурса Web. Исходный якорь - это местоположение экземпляра элемента A и целевой якорь ресурса Web.

Загруженный ресурс может обрабатываться агентом пользователя различными способами: открытием нового документа HTML в том же окне агента, открытием нового документа HTML в другом окне, запуском новой программы для обработки ресурса и т.д. Поскольку элемент A имеет содержание (текст, изображения и т.д.), агенты пользователей могут генерировать это содержимое так, чтобы показать наличие ссылки (например, подчеркивая содержимое).

Если установлены атрибуты name или id элемента A, этот элемент определяет якорь, который может служить целью других ссылок.

Авторы могут устанавливать атрибуты name и href одновременно в одном экземпляре элемента A.

Элемент LINK определяет отношение между текущим документом и другим ресурсом. Хотя элемент LINK не имеет содержимого, определяемые им отношения могут отображаться некоторыми агентами пользователей.

12.1.4 Заголовки ссылок

Атрибут title может устанавливаться как для элемента A, так и для элемента LINK; в нем указывается информация о природе ссылки. Эта информация может проговариваться агентом пользователя, отображаться в виде подсказки, изменять вид курсора и т.д.

Таким образом можно augment предыдущий пример, указав для каждой ссылки заголовок:

<BODY>
...некоторый текст...
<P>Подробнее Вы можете узнать об этом в <A href="chapter2.html"
       title="Перейдите к главе 2">главе 2</A>.
<A href="./chapter2.html"
       title="Переход к главе 2.">глава 2</A>.
См. также <A href="../images/forest.gif"
       title="Изображение леса в формате GIF">карту леса.</A>
</BODY>

12.1.5 Интернационализация и ссылки

Поскольку ссылки могут указывать на документы, использующие другие кодировки символов, элементы A и LINK поддерживают атрибут charset. Этот атрибут позволяет авторам рекомендовать агентам пользователей кодировку данных в связанном документе.

Атрибут hreflang предоставляет агенту пользователя информацию о языке связанного ресурса, точно так же, как атрибут lang предоставляет информацию о языке содержимого элемента или значениях атрибутов.

Имея дополнительные знания, агенты пользователей должны иметь возможность не представлять пользователю "мусор". Вместо этого они могут находить ресурсы, необходимые для корректного представления документа или, если они не могут найти эти ресурсы, по крайней мере уведомить пользователя о невозможности прочтения документа с указанием причины.

12.2 Элемент A

<!ELEMENT A - - (%inline;)* -(A)       -- якорь (точка ссылки) -->
<!ATTLIST A
  %attrs;                              -- %coreattrs, %i18n, %events --
  charset     %Charset;      #IMPLIED  -- кодировка символов связанного ресурса --
  type        %ContentType;  #IMPLIED  -- рекомендуемый тип содержимого --
  name        CDATA          #IMPLIED  -- конец именованной ссылки --
  href        %URI;          #IMPLIED  -- URI связанного ресурса --
  hreflang    %LanguageCode; #IMPLIED  -- код языка --
  rel         %LinkTypes;    #IMPLIED  -- типы прямых ссылок --
  rev         %LinkTypes;    #IMPLIED  -- типы обратных ссылок --
  accesskey   %Character;    #IMPLIED  -- клавиша доступа --
  shape       %Shape;        rect      -- для использования с клиентскими навигационными картами --
  coords      %Coords;       #IMPLIED  -- для использования с клиентскими навигационными картами --
  tabindex    NUMBER         #IMPLIED  -- положение в последовательности перехода --
  onfocus     %Script;       #IMPLIED  -- фокус на элементе --
  onblur      %Script;       #IMPLIED  -- фокус вне элемента --
  >

Начальный тэг: обязателен, Конечный тэг: обязателен

Определения атрибутов

name = cdata [CS]
Этот атрибут дает якорю имя, так что он может служить целью другой ссылки. Значением этого атрибута должно быть уникальное имя. Область действия имени - текущий документ. Обратите внимание, что этот атрибут использует общее пространство имен с атрибутом id.
href = uri [CT]
Этот атрибут определяет местоположение ресурса Web, определяя связь между текущим элементом (исходным якорем) и целевым якорем, определяемым этим атрибутом.
hreflang = langcode [CI]
Этот атрибут задает базовый язык ресурса, назначаемого атрибутом href, и может использоваться, только если указан атрибут href.
type = content-type [CI]
Если этот атрибут задан, он определяет тип части содержимого, например, результат обратного действия ссылки на ресурс. Типы содержимого определены в разделе [MIMETYPES].
rel = link-types [CI]
Этот атрибут описывает отношение из текущего документа к якорю, заданному атрибутом href. Значением этого атрибута является разделенный пробелами список типов ссылок.
rev = link-types [CI]
Этот атрибут используется для описания обратной ссылки из якоря, задаваемого атрибутом href, в текущий документ. Значением этого атрибута является разделенный пробелами список типов ссылок.
charset = charset [CI]
Этот атрибут задает кодировку символов назначаемого ссылкой ресурса. Подробнее см. в разделе о кодировках символов.

Атрибуты, определяемые в другом месте

  • id, class (идентификаторы в пределах документа)
  • lang (информация о языке), dir (направление текста)
  • title (заголовок элемента)
  • style (встроенная информация о стиле)
  • shape and coords (навигационные карты)
  • onfocus, onblur, onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события)
  • target (информация о целевом кадре)
  • tabindex (последовательность перехода)
  • accesskey (клавиши доступа)

Каждый элемент A определяет якорь

  1. Содержимое элемента A определяет положение якоря.
  2. Атрибут name задает имя якоря, так что он может служить пунктом назначения любого числа ссылок (см. также якоря с атрибутом id).
  3. Атрибут href назначает якорь пунктом назначения ровно одной ссылки.

Авторы также могут создавать элемент A, не определяющий ни одного якоря, и не указывающий href, name или id. Значения этих атрибутов могут устанавливаться позднее с помощью скриптов.

В следующем примере элемент A определяет ссылку. Исходным якорем является текст " Web-сайте W3C", а пунктом назначения - "http://www.w3.org/":

Подробнее о W3C Вы можете узнать на
<A href="http://www.w3.org/"> Web-сайте W3C</A>.

Эта ссылка указывает на страницу World Wide Web Consortium. Если пользователь активизирует эту ссылку в своем агенте, агент загрузит ресурс, в данном случае - документ HTML.

Обычно агенты пользователей представляют ссылки так, чтобы они были очевидны для пользователей (подчеркивание, обратное видео и т.д.). Конкретное представление зависит от агента пользователя. Представление может различаться в зависимости от того, посещал ли уже пользователь указанную ссылку. Возможное визуальное представлением предыдущей ссылки:

Подробнее о W3C Вы можете узнать на Web-сайте W3C.
                                    ~~~~~~~~~~~~~

Чтобы дать агентам пользователей явное указание кодировки символов целевой страницы, установите атрибут charset:

Подробнее о W3C Вы можете узнать на
<A href="http://www.w3.org/" charset="ISO-8859-1">Web-сайте W3C</A>

Предположим, мы определяем якорь с именем "anchor-one" в файле "one.html".

...текст до якоря...
<A name="anchor-one">Это местоположение первого якоря.</A>
...текст после якоря...

В данном фрагменте вокруг текста "Это местоположение первого якоря" создается якорь. Обычно содержимое элемента A не представляется каким-либо особым образом, если элемент A определяет только якорь.

Определив якорь, мы можем связать его с этим же или с другим документом. URI, назначающие якорь, включают символ "#", за которым следует имя якоря (идентификатор фрагмента). Вот несколько примеров таких URI:

  • Абсолютный URI: http://www.mycompany.com/one.html#anchor-one
  • Относительный URI: ./one.html#anchor-one или one.html#anchor-one
  • Если ссылка определена в том же документе: #anchor-one

Таким образом, ссылка, определенная в файле "two.html", который находится в одном каталоге с файлом "one.html", будет указывать на этот якорь следующим образом:

...текст до ссылки...
Подробнее см. <A href="./one.html#anchor-one"> первый якорь</A>.
...текст после ссылки...

Элемент A в следующем примере задает ссылку (с помощью атрибута href) и одновременно создает именованный якорь (с помощью атрибута name):

Я только что вернулся из отпуска! Вот
<A name="anchor-two"
   href="http://www.somecompany.com/People/Ian/vacation/family.png">
фотография моей семьи на озере.</A>.

В этом примере содержится ссылка на другой тип ресурса Web (изображение в формате PNG). Активизация ссылки должна привести к загрузке изображения из Web (и, возможно, его отображению, если система сконфигурирована соответствующим образом).

Примечание. Агенты пользователей должны уметь находить якоря, созданные пустыми элементами A, но некоторые агенты не могут этого делать. Например, некоторые агенты пользователей могут не найти "empty-anchor" в следующем фрагменте HTML:

<A name="empty-anchor"></A>
<EM>...некоторые текст в формате HTML...</EM>
<A href="#empty-anchor">Ссылка на пустой якорь</A>

12.2.1 Синтаксис имен якорей

Именем якоря является значение атрибута name или атрибута id, используемого в контексте якоря. К именам якорей применяются следующие правила:

  • Уникальность: Имена якорей должны быть уникальны в пределах документа. Имена якорей в одном документе не могут отличаться только регистром.
  • Соответствие строк: Сравнение между идентификаторами фрагментов и именами якорей должно проводиться на основе полного (с учетом регистра) совпадения.

Таким образом, следующий пример является корректным в смысле соответствия строк и должен рассматриваться агентами пользователей как совпадение:

<P><A href="#xxx">...</A>
...некоторый текст...
<P><A name="xxx">...</A>

ПРИМЕР НЕДОПУСТИМОГО ИСПОЛЬЗОВАНИЯ:
Следующий пример не является корректным в смысле уникальности, поскольку два имени отличаются только регистром:

<P><A name="xxx">...</A>
<P><A name="XXX">...</A>

Хотя далее приводится допустимый код HTML, поведение агента пользователя в данном случае не определено; некоторые агенты пользователей могут (ошибочно) считать это совпадением, другие могут так не считать.

<P><A href="#xxx">...</A>
...некоторый текст...
<P><A name="XXX">...</A>

Имена якорей должны содержать только символы набора ASCII. Подробнее см. в разделе об использовании символов, не входящих в набор ASCII, в значениях атрибутов URI.

12.2.2 Вложенные ссылки недопустимы

Ссылки и якоря, определяемые элементом A, не могут быть вложенными; элемент A не должен содержать других элементов A.

Поскольку DTD определяет элемент LINK как пустой, элементы LINK также не могут быть вложенными.

12.2.3 Якоря с атрибутом id

Атрибут id может использоваться для создания якоря в начальном тэге любого элемента (включая элемент A).

В данном примере показано использование атрибута id для размещения якоря в элементе H2. Связь с якорем осуществляется с помощью элемента A.

Подробнее об этом Вы можете прочесть в <A href="#section2">Разделе 2</A>.
...далее в документе
<H2 id="section2">Раздел 2</H2>
...далее в документе
<P>Подробнее см. в <A href="#section2">Разделе 2</A> выше.

В следующем примере имя целевого якоря задается с помощью атрибута id:

Я только что вернулся из отпуска! Вот
<A id="anchor-two">фотография моей семьи на озере.</A>.

Атрибуты id и name используют одно и то же пространство имен. Это означает, что они не могут определять якорь с одним и тем же именем в одном и том же документе.

ПРИМЕР НЕДОПУСТИМОГО ИСПОЛЬЗОВАНИЯ:
Далее показан недопустимый фрагмент кода HTML, поскольку эти атрибут объявляют одно и то же имя дважды в пределах одного документа.

<A href="#a1">...</A>
...
<H1 id="a1">
...страницы и страницы...
<A name="a1"></A>

По спецификации в HTML DTD атрибут name может содержать ссылки на символы. Таким образом, значение D&#xfc;rst является допустимым для атрибута name, так же как D&uuml;rst . Атрибут id не может содержать ссылки на символы.

Что использовать - id или name? При выборе элемента id или name для указания имени якоря авторы должны иметь в виду следующее:

  • Атрибут id может быть не только именем якоря (а также селектором таблицы стилей, идентификатором обработки и т.д.).
  • Некоторые агенты пользователей более старых версий не поддерживают якоря, созданные с помощью атрибута id.
  • Атрибут name обеспечивает более разнообразные имена якорей (с использованием entities).

12.2.4 Недоступные и неопределяемые ресурсы

Ссылка на недоступный или неопределяемый ресурс является ошибкой. Хотя агенты пользователей могут по-разному обрабатывать такие ошибки, рекомендуется следующее поведение:

  • Если агент пользователя не может найти связанный ресурс, он должен уведомить об этом пользователя.
  • Если агент пользователя не может идентифицировать тип связанного ресурса, он должен попытаться обработать его. Он должен уведомить пользователя и позволить пользователю вмешаться и определить тип документа.

12.3 Отношения документов: элемент LINK

<!ELEMENT LINK - O EMPTY               -- независимая от устройства ссылка -->
<!ATTLIST LINK
  %attrs;                              -- %coreattrs, %i18n, %events --
  charset     %Charset;      #IMPLIED  -- кодировка символов связанного ресурса --
  href        %URI;          #IMPLIED  -- URI связанного ресурса --
  hreflang    %LanguageCode; #IMPLIED  -- код языка --
  type        %ContentType;  #IMPLIED  -- рекомендуемый тип содержимого --
  rel         %LinkTypes;    #IMPLIED  -- тип прямой связи --
  rev         %LinkTypes;    #IMPLIED  -- тип обратной связи --
  media       %MediaDesc;    #IMPLIED  -- для представления на этих устройствах --
  >

Начальный тэг: обязателен, Конечный тэг: запрещен

Атрибуты, определяемые в другом месте

  • id, class (идентификаторы в переделах документа)
  • lang (информация о языке), dir (направление текста)
  • title (заголовок элемента)
  • style (встроенная информация о стиле )
  • onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события)
  • href, hreflang, type, rel, rev (ссылки и якоря)
  • target (информация о целевом фрейме)
  • media (информация о стиле заголовка)
  • charset (кодировки символов)

Этот элемент определяет связь. В отличие от элемента A, он может присутствовать только в разделе HEAD документа, хотя может присутствовать неограниченное число раз. Хотя элемент LINK не имеет содержимого, он содержит информацию об отношениях, которая может представляться агентами пользователей различными способами (например, в виде панели с выпадающим списком ссылок).

В данном примере показано, как несколько определений элемента LINK могут быть представлены в разделе HEAD документа. Текущим документом является "Chapter2.html". Атрибут rel указывает отношение связанного документа с текущим документом. Значения "Index", "Next" и "Prev" описаны в разделе, посвященном типам ссылок.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
   "http://www.w3.org/TR/REC-html40/strict.dtd">
<HTML>
<HEAD>
  <TITLE>Глава 2</TITLE>
  <LINK rel="Index" href="../index.html">
  <LINK rel="Next"  href="Chapter3.html">
  <LINK rel="Prev"  href="Chapter1.html">
</HEAD>
...продолжение документа...

12.3.1 Прямые и обратные ссылки

Атрибуты rel и rev играют дополнительные роли - атрибут rel задает прямую ссылку, а атрибут rev - обратную.

Рассмотрим два документа - A и B.

Документ A:       <LINK href="docB" rel="foo">

имеет точно то же значение, что и:

Документ B:       <LINK href="docA" rev="foo">

Оба атрибута могут определяться одновременно.

12.3.2 Ссылки и внешние таблицы стилей

Если элемент LINK ссылается на внешнюю таблицу стилей для документа, атрибут type указывает язык таблицы стилей, а атрибут media - предполагаемое устройство или устройства для представления документа. Агенты пользователей могут сэкономить время, загружая из сети только те таблицы стилей, которые применяются к текущему устройству.

Типы устройств обсуждаются в разделе, посвященном таблицам стилей.

12.3.3 Ссылки и поисковые машины

Авторы могут использовать элемент LINK для указания различной информации для поисковых машин, включая:

  • Ссылки на альтернативные версии документа, написанные на других языках.
  • Ссылки на альтернативные версии документа, разработанные для других устройств, например, на версии, предназначенные специально для печати.
  • Ссылки на начальные страницы набора документов.

В примерах ниже показано, как информация о языке, типах устройств и типах ссылок может использоваться для улучшения обработки документа поисковыми машинами.

В следующем примере мы используем атрибут hreflang, чтобы сообщить поисковым машинам, где находятся голландская, португальская и арабская версии документа. Обратите внимание на использование атрибутов dir и charset для руководства на арабском языке, а также на использование атрибута lang для указания того, что значением атрибута title для элемента LINK, указывающего руководство на французском языке, задано по-французски.

<HEAD>
<TITLE>Руководство на английском языке</TITLE>
<LINK title="Руководство на голландском языке"
      type="text/html"
      rel="alternate"
      hreflang="nl"
      href="http://someplace.com/manual/dutch.html">
<LINK title="Руководство на португальском языке"
      type="text/html"
      rel="alternate"
      hreflang="pt"
      href="http://someplace.com/manual/portuguese.html">
<LINK title="Руководство на арабском языке"
      dir="rtl"
      type="text/html"
      rel="alternate"
      charset="ISO-8859-6"
      hreflang="ar"
      href="http://someplace.com/manual/arabic.html">
<LINK lang="fr" title="La documentation en Fran&ccedil;ais"
      type="text/html"
      rel="alternate"
      hreflang="fr"
      href="http://someplace.com/manual/french.html">
</HEAD>

В следующем примере мы сообщаем поисковым машинам, где находится печатная версия руководства.

<HEAD>
<TITLE>Руководство</TITLE>
<LINK media="print" title="Руководство в формате postscript"
      type="application/postscript"
      rel="alternate"
      href="http://someplace.com/manual/postscript.ps">
</HEAD>

В следующем примере мы сообщаем поисковым машинам, где находится первая страница набора документов.

<HEAD>
<TITLE>Руководство - страница 5</TITLE>
<LINK rel="Start" title="Первая страница руководства"
      type="text/html"
      href="http://someplace.com/manual/start.html">
</HEAD>

Дальнейшая информация приведена в замечаниях в приложении о том, как помочь поисковым машинам проиндексировать Ваш Web-сайт.

12.4 Информация о пути: элемент BASE

<!ELEMENT BASE - O EMPTY               -- базовый URI документа -->
<!ATTLIST BASE
  href        %URI;          #REQUIRED -- URI, служащий базовым --
  >

Начальный тэг: обязателен, Конечный тэг: запрещен

Определения атрибутов

href = uri [CT]
Этот атрибут задает абсолютный URI, служащий базовым URI для разрешения относительных URI.

Атрибуты, определяемые в другом месте

  • target (информация о целевом кадре)

В HTML ссылки на внешние изображения, апплеты, программы для обработки форм, таблицы стилей и т.д. всегда задаются с помощью URI. Относительные URI разрешаются в соответствии с базовым URI, который может определяться из различных источников. Элемент BASE позволяет авторам явно указать базовый URI документа.

Если элемент BASE указан, он должен присутствовать в разделе HEAD документа HTML, до элементов, ссылающихся на внешние ресурсы. Информация о пути, указанная в элементе BASE, влияет только на URI в документе, в котором присутствует этот элемент.

Например, даны следующее объявление BASE и объявление A:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
   "http://www.w3.org/TR/REC-html40/strict.dtd">
<HTML>
 <HEAD>
   <TITLE>Наши продукты</TITLE>
   <BASE href="http://www.aviary.com/products/intro.html">
 </HEAD>

 <BODY>
   <P>Вы видели наши <A href="../cages/birds.gif">клетки для птиц</A>?
 </BODY>
</HTML>

относительный URI "../cages/birds.gif" будет разрешен в:

http://www.aviary.com/cages/birds.gif

12.4.1 Разрешение относительных URI

Агенты пользователей должны вычислять базовый URI для разрешения относительных URI в соответствии с [RFC1808], раздел 3. Далее описано, как [RFC1808] применяется именно к HTML.

Агенты пользователей должны вычислять базовый URI в соответствии со следующим приоритетом (от высшего приоритет к низшему):

  1. Базовый URI, устанавливаемый элементом BASE.
  2. Базовый URI, задаваемый метаданными, обнаруженными в процессе работы по протоколу, такими как заголовок HTTP (см. [RFC2068]).
  3. По умолчанию базовым URI является URI текущего документа. Не все документы HTML имеют базовый URI (например, документ HTML может присутствовать в сообщении электронной почты и может не определяться никаким URI). Такие документы HTML считаются erroneous, если они содержат относительные URI и используют базовый URI по умолчанию.

Кроме того, элементы OBJECT и APPLET определяют атрибуты, имеющие преимущество над значением, установленным для элемента BASE. Подробнее об относящихся к ним определениям URI см. в определениях этих элементов.

Ссылки, указанные в заголовках HTTP, обрабатываются в точности так, как элементы LINK, явно установленные в документе.


Index

Указатель

A B C D F G H I L M N P S T U W
А Б В Г Д З И К Л М Н О П Р С Т У Ф Ц Ч Ш Э Я
application/x-www-form-urlencoded 1, 2
%attrs; 1
%block; 1
BODY
none в наборе фреймов 1
CDATA 1, 2
данные скрипта и стиля 1
CERN 1
%Character; 1
%Charset; 1
%Color; 1
%ContentType; 1
%Datetime; 1
Dublin Core 1
%FrameTarget; 1
GET
и передача формы 1
HTML
версия 2.0 1
версия 3.0 1
версия 3.2 1
версия HTML+ 1
как приложение SGML 1
комментарии в 1
определение внешних данных 1
развитие 1
советы авторам 1
HTTP
GET и POST с формами 1
заголовок Content-Language 1
заголовок Content-Script-Type 1
заголовок Content-Style-Type 1
заголовок Content-Type 1
заголовок Default-Style 1
использвание для связи с внешними таблицами стилей 1
ID 1
IDREF 1
IDREFS 1
%inline; 1
Internet Engineering Task Force (IETF) 1
%LanguageCode; 1
%Length; 1
%MediaDesc; 1
%MultiLength; 1
multipart/form-data 1, 2
NAME 1
NUMBER 1
%Pixels; 1
Platform for Internet Content Selection (PICS) 1
POST
для данных формы в формате, отличном от ASCII 1
и отправка формы 1
%Script; 1
SGML
введение в 1
замечания о применении 1
каталог для HTML 1
набор символов документа 1
обработка переноса строки 1
объявление 1
объявление HTML 4.0 1
объявление типа документа 1
определение типа документа (DTD) 1
приложение 1
проверка корректности документа 1
функции с ограниченной поддержкой 1, 2
strict DTD
объявление 1
определение 1
text/css 1
text/html 1
%Text; 1
transitional DTD
объявление 1
определение 1
URI
использование в HTML 1
относительный 1
разрешение относительного 1, 2
регистр 1
символы не из набора ASCII в значениях атрибутов 1
указание базового 1
%URI; 1
URL
отношение к URI 1
UTF-1 1
UTF-16 1
World Wide Web (Web) 1
аббревиатуры и сокращения 1
абзац
визуальное представление 1
автор 1
агент пользователя 1
и данные скрипта 1
и данные стиля 1
и ошибочные состояния о1, 2
обработка данных скриптов и стилей 1
обработка изображений-карт 1
соответствующий 1
альтернативные таблицы стилей 1
альтернативный текст
указание 1
апплет
способы включения 1
атрибут 1
значение #FIXED 1
значение #IMPLIED 1
значение #REQUIRED 1
кавычки вокруг значения 1
логический 1
минимизированный логический 1
объявление в DTD 1
регистр значений 1
с учетом регистра 1
атрибут id
роль 1
то же пространство имен, что у атрибута name 1
атрибут lang
если применим 1
не для направления 1
атрибут класса
роли 1
базовый URI 1
безопасность
замечания о 1
управляющего элемента для ввода пароля 1
включение объекта 1
внутренние события 1
время
формат 1
встроенный
элемент 1
выравнивание
изображений 1
объектов 1
плавающего текста 1
плавающее 1
содержимого таблиц 1
элементов уровня блока 1
вырезка
текста таблицы 1
граница
изображения 1
объекта 1
таблицы 1
фрейма 1
группа столбцов 1
группа строк 1
дата
вставленного и удаленного текста 1
формат 1
двунаправленность
алгоритм Unicode 1
и кодировка символов 1
и таблицы стилей 1
переопределение 1
двунаправленный алгоритм Unicode 1
дескриптор устройства
регистр 1
синтаксический анализ 1
список распознаваемых 1
длинное описание изображения
отношение с текстом alt 1
документ
динамическое изменение с помощью скриптов 1
проверка SGML 1
способы включения 1, 2
способы внедрения 1
документ HTML 1
документ с набором фреймов 1
доступность
альтернативное содержимое объекта 1
альтернативный текст 1
длинное описание изображения 1
замечания о генерации альтернативного текста 1
и альтернативное содержание фрейма 1
и длинные описаиня фреймов 1
и таблицы стилей 1
изображений-карт 1, 2
клавиши доступа 1
функции HTML 4.0 1
заголовки
корректно вложенные 1
заголовок
документа 1
доступный пользователю 1
использование для аннотации элементов 1
заголовок Content-Language 1
заголовок Content-Script-Type 1
заголовок Content-Style-Type 1
заголовок Content-Type 1
замечания о минимизированном 1
значение атрибута #FIXED 1
значение атрибута #IMPLIED 1
значение атрибута #REQUIRED 1
идентификатор фрагмента 1, 2
изображение
визуальное представление 1
выравнивание 1
граница вокруг 1
длинное описание 1
не в кадре 1
пустое пространство вокруг 1
способы включения 1
ширина и высота 1
изображение-карта 1, 2
доступность 1
клиентское 1
на сервере 1
недопустимое для элемента IMG в элементе BUTTON 1
перекрывающиеся области 1
серверное 1
с элементом OBJECT 1
каскадные таблицы стилей 1
каталог для HTML 1
клавиша доступа 1
клиентское изображение-карта 1
создание 1
кнопка 1
кнопка отправки 1
кнопка сброса 1
кнопка с зависимой фиксацией 1
кодировка символов 1, 2
UTF-1 1
UTF-16 1
выбор 1
для отправки формы 1
и двунаправленность 1
имена 1
общие примеры 1
определение агентами пользователей 1
по умолчанию 1
спецификация 1
ссылок 1
комментарии
в DTD 1
в HTML 1
использование для скрытия данных таблицы стилей 1
использование для скрытия текста скрипта 1
не представляемые 1
ссылки на символы в 1
только информативные 1
конечный тег 1
объявление как необязательного 1
пропуск 1
координаты
серверного изображения-карты 1
щелчка для отправки формы 1
краткая инфомрация
о содержимом 1
логический атрибут 1, 2
минимизированный 1
меню 1
визуальное представление сгруппированных вариантов 1
группировка вариантов 1
заранее выбранные варианты 1
представление вариантов 1
метаданные 1
LINK и META 1
профили 1
схема 1
метка
и фокус 1
неявная связь с управляющим элементом 1
явная связь с управляющим элементом 1
модель содержимого 1
исключенные элементы в 1
синтаксис в DTD 1
мягкий перенос 1
набор данных формы 1
кодировка 1
набор символов 1
набор символов документа 1
ISO10646 1
эквивалентность ISO10646 и UNICODE 1
набор фреймов
DTD, обяъвление 1
DTD, определение 1
альтернативное содержимое для 1
вложенные 1
определение расположения 1
проблемы перехода с 1
совместное использование данных между 1
наборы комбинаций
URI для HTML 4.0 1
направление
информации о таблице 1
наследование для вложенных элементов 1
текста 1
начальный тег 1
отсутствует 1
нежелательный 1
элемент 1
нумерованные заголовки
нумерованный 1
область действия
заголовка ячейки таблицы 1
объект
в HEAD 1, 2, 3
в форме 1
визуальное представление 1
выравнивание 1
граница вокруг 1
инициализация 1
нейтрализация ошибок представления 1
общее включение 1
объявляемые статически 1
правила внедрения 1
пустое пространство вокруг 1
расположение реализации и данных 1
схемы именования 1
ширина и высота 1
объект параметра
%Character; 1
%Charset; 1
%Color; 1
%ContentType; 1
%Datetime; 1
%FrameTarget; 1
%LanguageCode; 1
%Length; 1
%MediaDesc; 1
%MultiLength; 1
%Pixels; 1
%Script; 1
%Text; 1
%URI; 1
%attrs; 1
%block; 1
%inline; 1
объект сообщения 1
объявление типа документа 1
для frameset DTD 1
для strict DTD 1
для transitional DTD 1
определение объекта параметра 1
определение типа документа 1
strict 1
transitional 1
как читать 1
комментарии в 1
набор фреймов 1
примеры соответствия 1
фрагменты DTD, соответствующие 1
отключенные управляющие элементы 1
неуспешные 1
относительная длина 1
относительный URI 1
разрешение 1
ошибка
изображение-карта с помощью IMG в элементе BUTTON 1
недоступные ресурсы 1
правила стиля представления в элементе STYLE 1
при обработке агентами пользователей 1, 2
перевод строки 1
жесткий 1
запрет 1
и двунапрвленный текст 1
и плавающий текст 1
перенос 1
переход с помощью клавиши tab 1
пиксел 1
плавающие объекты 1
плавающий текст 1
по умолчанию
кодировка символов 1
целевой фрейм 1
язык скрипта 1
язык таблиц стилей 1
позиция кода 1
поисковая машина
и ссылки 1
помощь 1, 2
поисковый робот
помощь 1
пользователь 1
последовательность перехода 1
постоянные таблицы стилей 1
предпочитаемые таблицы стилей 1
профиль 1
пустое пространство 1
вокруг изображений и объектов 1
вокруг содержимого таблицы 1
вокруг фрейма 1
сбой 1
символ 1
сохраненный в PRE 1
пустой элемент 1
Рабочая группа HTML
члены 1
разбиение текста 1
разделитель
между элементами уровня блока 1
между ячейками таблицы 1
разметка 1
разрешение относительного URI 1
расстояние между словами 1
регистр
URI 1
данных скрипта 1
данных стиля 1
дескрипторов устройств 1
значений атрибутов 1, 2, 3
значений длин 1
имен атрибутов 1
имен элементов 1
имен якорей 1
кодировок символов 1
кодов языков 1
названий цветов 1
ссылки на комбинацию символов 1
типов содержимого 1
типов ссылок 1
числовых ссылок на символы 1
сброс формы 1
серверное изображение-карта 1, 2
координаты щелчка 1
символы
абстрактные 1
клавиши доступа 1
наилучшее представление 1
обработка неотображаемых 1
представление неотображаемых 1
скрипт
введение в 1
выполняемый по загрузке документа 1
выполняемый по событию 1
данные 1
замечания о применении 1
зарезервированный синтаксис для 1
использование 1
использование для изменения документов 1
использование для установки якоря 1
комментарии для скрытия 1
не поддерживается 1
ссылки на элементы 1
скрытый управляющий элемент 1, 2
события 1
соответствие 1
список
визуальное представление 1
вложение 1
неупорядоченный 1
нумерация 1
определений 1
таблицы стилей и 1
упорядоченный 1
средства разработки 1, 2
и язык таблиц стилей по умолчанию 1
ссылка
вперед и назад 1
заголовок 1
и внешние таблицы стилей 1, 2
и зависимые от устройств таблицы стилей 1
и кодировка символов 1
использование для загрузки ресурса 1
использование для определения отношений 1
недопустимость вложения 1
определение 1
представление 1
семантика с целевым фреймом 1
тип 1
цель по умолчанию для 1
ссылки на комбинации символов 1
ссылки на символы 1, 2
для направления 1
столбец
число в таблице 1
ширина в таблице 1
строка
число в таблице 1
схема 1
таблица
алгоритм для поиска заголовков 1
алгоритмы компоновки 1
визуальное представление 1
выравнивание содержимого 1
границы и разделители 1
группа столбцов в 1
группа строк в 1
заголовки 1
замечания о последовательном представлении 1
категоризация ячеек 1
краткая инфомрация о содержимом 1
направление 1
невизуальное представление 1
не для форматирования страниц 1
поля в ячейках 1
последовательное представление 1
произнесение данных ячейки 1
число столбцов 1
число строк 1
ширина столбцов 1
ячейки данных 1
ячейки заголовков 1
ячейки, объединяющие несколько строк/столбцов 1
таблица стилей
альтернативная 1
введение в 1
внешние 1
внешние через ссылки 1
встроенные правила 1
данные 1
и двунаправленность 1
использование с DIV и SPAN 1
каскадные 1
комментарии по скрытию 1
постоянные 1
правила в HEAD 1
предпочитаемые 1
спецификация внешних 1
спецификация предпочитаемых 1
целевое устройство для 1
текст
в кавычках 1
заранее отформатированный 1
направление 1
плавающий 1
разбиение на строки в абзацах 1
разметка для вставленного и удаленного 1
текст в кавычках 1
представление 1
тип данных
CDATA 1
ID 1
IDREF 1
IDREFS 1
NAME 1
NUMBER 1
тип содержимого
application/x-www-form-urlencoded 1
multipart/form-data 1
text/css 1
text/html 1
тип ссылки
профили для нового 1
регистр 1
список распознаваемых 1
типы содержимого
для кодирования данных формы 1
универсальный идентификатор ресурсов (см. URI) 1
универсальный набор символов 1
управление объектом 1, 2
управляющий элемент 1
значение управляющего элемента 1
имя управляющего элемента 1
исходное значение 1
клавиша доступа к 1
отключенный 1
перевод фокуса на 1
переход с помощью клавиши tab 1
события для 1
типы 1
только для чтения 1
успешный 1
управляющий элемент для ввода пароля 1
управляющий элемент для ввода текста 1
многострочный 1
однострочный 1
управляющий элемент для выбора файлов 1
отправка 1
управляющий элемент только для чтения 1
уровень блока
и двунаправленность 1, 2
элемент 1
успешный управляющий элемент 1
устаревшие 1
элементы 1
устройства
и внешние таблицы стилей 1
использование с таблицами стилей 1
флажок 1
фокус 1
и клавиша доступа 1
метка, даваемая управляющему элементу 1
форма
добавление меток в 1
замечания об отображении 1
кодирование данных 1
метод отправки 1
методы и действия 1
обработка управляющих элементов 1
остаток 1
отправка 1
переход по управляющим элементам 1
передаваемые значения 1
последовательность перехода в управляющих элементах 1
структурирующие управляющие элементы в 1
типы содержимого для кодирования 1
типы управляющих элементов 1
управляющие элементы в 1
фрейм
введение в 1
встроенные 1
границы 1
длинное описание 1
исходное содержимое 1
проблемы URI с 1
простраство вокруг 1
список зарезервированных целевых имен 1
целевой алгоритм 1
цель документа 1
цвет
фона 1
цвет фона 1
названия 1
целевой фрейм
алгоритм 1
зарезервированные имена 1
по умолчанию 1
семантика 1
спецификация 1
числовые ссылки на символы 1
шрифт
стиль в HTML 1
элемент
встроенный 1
конечный тег 1
модель содержимого 1
начальный тег 1
объявление типа 1, 2
поддержка нежелательных 1
поддержка устаревших 1
пропуск конечного тега 1
пропуск начального тега 1
пустой 1, 2
список нежелательных 1
список устаревших 1
ссылки из скриптов 1
с учетом регистра 1
типы 1
уникальный идентификатор 1
уровня блока 1
язык
коды для указания 1
связанного ресурса 1
скрипта 1
текста 1
Язык описания ресурсов (Resource Description Language, RDF) 1, 2
язык разметки 1
язык скриптов
локальное объявление 1
по умолчанию 1
спецификация 1
язык таблиц стилей
по умолчанию 1
якорь 1
простраство имен 1
регистр имени 1
символы ASCII в имени 1
символы, не входящие в набор ASCII, в имени 1
синтаксис имени 1
создание с помощью атрибута id 1
создание с помощью элемента A 1
с помощью A и с помощью id 1
ссылки на символы в имени 1
уникальность имени 1
устанавливаемый скриптом 1
ячейка данных
в таблице 1
ячейка заголовка
в таблице 1
область действия 1
сокращение 1


Списки в документах в формате HTML

10 Списки

  1. Введение в списки
  2. Неупорядоченные списки (UL), упорядоченные списки (OL) и элементы списков (LI)
  3. Списки определений: элементы DL, DT и DD
    1. Визуальное представление списков
  4. Элементы DIR и MENU

10.1 Введение в списки

Язык HTML предлагает авторам несколько механизмов создания списков информации. В каждом списке должен быть один или несколько элементов списков. Списки могут содержать:
  • Неупорядоченную информацию.
  • Упорядоченную информацию.
  • Определения.

Предыдущий список, например, не упорядочен, он создан с помощью элемента UL:

<UL>
<LI>Неупорядоченную информацию.
<LI>Упорядоченную информацию.
<LI>Определения.
</UL>

Упорядоченный список, создаваемый с помощью элемента OL, может содержать информацию, в которой важен порядок, например, рецепт:

  1. Тщательно смешать сухие ингредиенты.
  2. Влить жидкость.
  3. Смешивать 10 минут.
  4. Выпекать в течение часа при температуре 300 градусов.

Списки определений, создаваемые с помощью элемента DL, могут содержать ряд пар термин/определение (хотя списки определений могут иметь и иные применения). Например, список определений можно использовать в рекламе изделия:

Низкая цена
Новая модель этого изделия существенно дешевле предыдущей!
Проще работа
Мы изменили изделие, так что с ним теперь легко работать!
Безопасно для детей
Вы можете оставить своих детей в комнате, и изделие не причинит им вреда (не гарантируется).

На языке HTML он определяется следующим образом:

<DL>
<DT><STRONG>Низкая цена</STRONG>
<DD> Новая модель этого изделия существенно дешевле предыдущей!
<DT><STRONG>Проще работа</STRONG>
<DD>Мы изменили изделие, так что с ним теперь легко работать!
<DT><STRONG> Безопасно для детей </STRONG>
<DD> Вы можете оставить своих детей в комнате, и изделие не причинит им вреда (не гарантируется).
</DL>

Списки могут быть вложенными, разные типы списков можно использовать вместе, как в следующем примере, где список определений содержит неупорядоченный список (ингредиенты) и упорядоченный список (процедуру):

Ингредиенты:
  • 100 г муки
  • 10 г сахара
  • 1 стакан воды
  • 2 яйца
  • соль, перец
Процедура:
  1. Тщательно смешайте сухие ингредиенты.
  2. Влейте жидкие ингредиенты.
  3. Смешивайте 10 минут.
  4. Выпекайте в течение часа при температуре 300 градусов.
Примечания:
Можно добавить изюм.

Точное представление трех типов списков зависит от агента пользователя. Не стоит использовать списки для создания отступов в тексте. Это делается с помощью таблиц стилей.

10.2 Неупорядоченные списки (UL), упорядоченные списки (OL) и элементы списков (LI)

<!ELEMENT UL - - (LI)+                 -- неупорядоченный список -->
<!ATTLIST UL
  %attrs;                              -- %coreattrs, %i18n, %events --
  >
<!ELEMENT OL - - (LI)+                 -- упорядоченный список -->
<!ATTLIST OL
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

Начальный тег: обязателен, Конечный тег: обязателен

<!ELEMENT LI - O (%flow;)*             -- элемент списка -->
<!ATTLIST LI
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

Начальный тег: обязателен, Конечный тег: не обязателен

Определения атрибутов

type = информация о стиле [CI]
Нежелателен. Этот атрибут устанавливает стиль элемента списка. Доступные в настоящее время значения предназначены для визуальных агентов пользователей. Возможные значения описаны ниже (включая информацию о регистре).
start = число [CN]
Нежелателен. Только для OL. Этот атрибут задает начальный номер первого элемента в упорядоченном списке. По умолчанию начальный номер - "1". Помните, что, хотя значением этого атрибута является целое число, соответствующая метка может быть нецифровая. Если в качестве стиля выбраны латинские буквы верхнего регистра (A, B, C, ...), start=3 означает "C". Если в качестве стиля выбраны римские цифры нижнего регистра, start=3 означает "iii" и т.д.
value = число [CN]
Нежелетельно. Только для LI. Этот атрибут устанавливает номер текущего элемента списка. Помните, что, хотя значением атрибута является целое число, соответствующая метка может быть нечисловая (см. атрибут start).
compact [CI]
Нежелателен. Если этот логический атрибут установлен, он сообщает визуальным агентам пользователей о том, что генерировать список нужно более компактно. Интерпретация этого атрибута зависит от агента пользователя.

Атрибуты, определяемые в любом другом месте

  • id, class (идентификаторы в пределах документа)
  • lang (информация о языке), dir (направление текста)
  • title (заголовок элемента)
  • style (встроенная информация о стиле)
  • onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события)

Упорядоченные и неупорядоченные списки генерируются одинаково за исключением того, что визуальные агенты пользователей нумеруют упорядоченные списки. Агенты пользователей могут представлять эти номера несколькими способами. Элементы неупорядоченного списка не нумеруются.

Оба эти типа списков состоят из последовательностей элементов списков, определяемых элементом LI (конечный тег которого можно опустить).

В этом примере показана общая структура списка.

<UL>
   <LI> ... первый элемент списка...
   <LI> ... второй элемент списка...
   ...
</UL>

Списки могут быть вложенными:

ПРИМЕР НЕЖЕЛАТЕЛЬНОГО ИСПОЛЬЗОВАНИЯ:

<UL>
     <LI> ... Уровень один, номер один...
     <OL>
        <LI> ... Уровень два, номер один...
        <LI> ... Уровень два, номер два...
        <OL start="10">
           <LI> ... Уровень три, номер один...
        </OL>
        <LI> ... Уровень два, номер три...
     </OL>
     <LI> ... Уровень один, номер два...
</UL>

Информация о порядке номеров. В упорядоченных списках невозможно продолжать нумерацию автоматически из предыдущего списка или убрать нумерацию для некоторых элементов. Однако авторы могут пропустить несколько элементов списка, установив для них атрибут value. Нумерация для последующих элементов списка продолжается с нового значения. Например:

<ol>
<li value="30"> элемент списка номер 30.
<li value="40"> элемент списка номер 40.
<li> элемент списка номер 41.
</ol>

10.3 Списки определений: элементы DL, DT и DD

<!-- списки определений - DT - термин, DD  - его определение -->

<!ELEMENT DL - - (DT|DD)+              -- список определений -->
<!ATTLIST DL
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

Начальный тег: обязателен, Конечный тег: обязателен

<!ELEMENT DT - O (%inline;)*           -- термин -->
<!ELEMENT DD - O (%flow;)*             -- определение -->
<!ATTLIST (DT|DD)
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

Начальные тег: обязателен, Конечный тег: не обязателен

Атрибуты, определяемые в любом другом месте

  • id, class (идентификаторы в пределах документа)
  • lang (информация о языке), dir (направление текста)
  • title (заголовок элемента)
  • style (встроенная информация о стиле)
  • onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события)

Списки определений незначительно отличаются от других типов списков - тем, что элементы состоят из двух частей: термина и определения. Термин обозначается с помощью элемента DT и может иметь только встроенное содержимое. Описание указывается с помощью элемента DD, имеющим содержимое уровня блока.

Пример:

<DL>
  <DT>Dweeb
  <DD>young excitable person who may mature
    into a <EM>Nerd</EM> or <EM>Geek</EM>

  <DT>Cracker
  <DD>hacker on the Internet

  <DT>Nerd
  <DD>male so into the Net that he forgets
    his wife's birthday
</DL>

Вот пример с несколькими терминами и определениями:

<DL>
   <DT>Center
   <DT>Centre
   <DD> A point equidistant from all points
              on the surface of a sphere.
   <DD> In some field sports, the player who
              holds the middle position on the field, court,
              or forward line.
</DL>

Другим применением элемента DL, например, может быть разметка диалогов, где каждый элемент DT означает говорящего, а в каждом элементе DD содержатся его слова.

10.3.1 Визуальное отображение списков

Примечание.Ниже приводится информативное описание поведения некоторых имеющихся на настоящий момент визуальных агентов пользователей при форматировании списков. Таблицы стилей предоставляют большие возможности управления форматированием списков (например, в отношении нумерации, соглашений, используемых в разных языках, отступов и т.д.).

Визуальные агенты пользователей обычно сдвигают вложенные списки соответственно уровню вложенности.

Для элементов OL и UL атрибут type определяет параметры генерации для визуальных агентов пользователей.

Для элемента UL возможными значениями атрибута type являются disc, square и circle. Значение, используемое по умолчанию, зависит от уровня вложенности текущего списка. Эти значения не учитывают регистр.

Представление каждого значения зависит от агента пользователя. Агенты пользователей должны пытаться представлять "disc" в виде небольшого заполненного кружка, "circle" - в виде окружности, а "square" в виде небольшого квадрата.

Графические агенты пользователь могут генерировать их как:

A possible rendering of a disc для значения "disc"
A possible rendering of a circle для значения "circle"
A possible rendering of a square для значения "square"

Для элемента OL возможные значения атрибута type приведены в следующей таблице (они учитывают регистр):

Type | Стиль нумерации
1 | арабские цифры | 1, 2, 3, ...
a | буквы нижнего регистра | a, b, c, ...
A | буквы верхнего регистра | A, B, C, ...
i | римские цифры в нижнем регистре | i, ii, iii, ...
I | римские цифры в верхнем регистре | I, II, III, ...

Помните, что использование атрибута type нежелательно, и стили списков должны определяться с помощью таблиц стилей.

Например, с помощью CSS можно указать, что стиль нумерации для элементов списка в нумерованном списке - римские цифры нижнего регистра. В приведенном ниже примере каждый элемент OL, принадлежащий классу "withroman", обозначается римской цифрой.

<STYLE type="text/css">
OL.withroman { list-style-type: lower-roman }
</STYLE>
<BODY>
<OL class="withroman">
<LI> Шаг один ...
<LI> Шаг два ...
</OL>
</BODY>

Генерация списка определений также зависит от агента пользователя. Например, список:

<DL>
  <DT>Dweeb
  <DD>young excitable person who may mature
    into a <EM>Nerd</EM> or <EM>Geek</EM>

  <DT>Cracker
  <DD>hacker on the Internet

  <DT>Nerd
  <DD>male so into the Net that he forgets
    his wife's birthday
</DL>

может генерироваться следующим образом:

Dweeb
       young excitable person who may mature into a Nerd or Geek
Cracker
       hacker on the Internet
Nerd
       male so into the Net that he forgets his wife's birthday

10.4 Элементы DIR и MENU

Использование элементов DIR и MENU нежелательно.

Формальное определение см. в Переходном DTD.

Атрибуты, определяемые в любом другом месте

  • id, class (идентификаторы в пределах документа)
  • lang (информация о языке), dir (направление текста)
  • title (заголовок элемента)
  • style (встроенная информация о стиле)
  • onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события)

Элемент DIR предназначался для создания многостраничных списков каталогов. Элемент MENU предназначался для использования в списках меню, состоящих из одного столбца. Оба эти элемента имеют ту же структуру, что и элемент UL, различаясь только при генерации. На практике агенты пользователей генерируют списки DIR или MENU точно так же, как список UL.

Настоятельно рекомендуется использовать вместо этих элементов элемент UL.


HTML 4.0 Transitional Document Type Definition

22 Переходное определение типа документа (Transitional Document Type Definition)

<!--
    В данном HTML 4.0 Strict DTD исключаются атрибуты
    и элементы представления, использование которых для
    определения стиля W3C планирует постепенно прекратить.
    Авторам следует при возможности использовать Strict DTD,
    но в случае необходимости поддержки атрибутов и элементов
    представления допускается использование Transitional DTD.

    В HTML 4.0 включены механизмы поддержки таблиц стилей,
    скриптов, внедрения объектов, улучшена поддержка направления
    текста справа налево и смешанного текста, а также внесены
    изменения в формы с целью обеспечения удобства работы
    пользователей с физическими недостатками.

          Черновик: $Дата: 1997/12/18 09:36:02 $

          Авторы:
              Дэйв Рэгетт <dsr@w3.org>
              Арно Ле Орс <lehors@w3.org>
              Ян Джейкобс <ij@w3.org>

    Подробную информацию о HTML 4.0 можно найти по адресу:

        http://www.w3.org/TR/REC-html40
-->
<!ENTITY % HTML.Version "-//W3C//DTD HTML 4.0 Transitional//EN"
  -- Пример типичного использования:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
            "http://www.w3.org/TR/REC-html40/loose.dtd">
    <html>
    <head>
    ...
    </head>
    <body>
    ...
    </body>
    </html>

    URI, используемый как идентификатор системы, позволяет
    агенту пользователя загрузить необходимые DTD и наборы
    комбинаций.

    FPI для Strict HTML 4.0 DTD:

        "-//W3C//DTD HTML 4.0//EN"

    его URI:

        http://www.w3.org/TR/REC-html40/strict.dtd

    Авторы должны использовать Strict DTD, если только им не
    нужно использовать управление представленим для агентов
    пользователей, не поддерживающих (адекватынм образом) таблицы
    стилей.

    Если Вы создаете документ с фреймами, используйте
    следующий FPI:

        "-//W3C//DTD HTML 4.0 Frameset//EN"

    и URI:

        http://www.w3.org/TR/REC-html40/frameset.dtd

    По отношению к HTML 4.0 поддерживаются следующие URI

    "http://www.w3.org/TR/REC-html40/strict.dtd" (Strict DTD)
    "http://www.w3.org/TR/REC-html40/loose.dtd" (Loose DTD)
    "http://www.w3.org/TR/REC-html40/frameset.dtd" (Frameset DTD)
    "http://www.w3.org/TR/REC-html40/HTMLlat1.ent" (Latin-1 entities)
    "http://www.w3.org/TR/REC-html40/HTMLsymbol.ent" (Symbol entities)
    "http://www.w3.org/TR/REC-html40/HTMLspecial.ent" (Special entities)

    Эти URI указывают на последнюю версию каждого файла.
    Для ссылки на специальную версию используйте следующие URI:

    "http://www.w3.org/TR/REC-html40-971218/strict.dtd"
    "http://www.w3.org/TR/REC-html40-971218/loose.dtd"
    "http://www.w3.org/TR/REC-html40-971218/frameset.dtd"
    "http://www.w3.org/TR/REC-html40-971218/HTMLlat1.ent"
    "http://www.w3.org/TR/REC-html40-971218/HTMLsymbol.ent"
    "http://www.w3.org/TR/REC-html40-971218/HTMLspecial.ent"

-->

<!--================== Импортированные имена ====================================-->

<!ENTITY % ContentType "CDATA"
    -- тип устройства в соответствии  с [RFC2045]
    -->

<!ENTITY % ContentTypes "CDATA"
    -- разделенный запятыми список типов устройств в соответствии с [RFC2045]
    -->

<!ENTITY % Charset "CDATA"
    -- кодировка символов в соответствии с [RFC2045]
    -->

<!ENTITY % Charsets "CDATA"
    -- разделенный пробелами список кодировок символов в соответствии с [RFC2045]
    -->

<!ENTITY % LanguageCode "NAME"
    -- код языка в соответствии с [RFC1766]
    -->

<!ENTITY % Character "CDATA"
    -- отдельный символ [ISO10646]
    -->

<!ENTITY % LinkTypes "CDATA"
    -- разделенный пробелами список типов ссылок
    -->

<!ENTITY % MediaDesc "CDATA"
    -- отдельный дескриптор устройства или разделенный запятыми список
    -->

<!ENTITY % URI "CDATA"
    -- универсальный идентификатор ресурса,
       см. [URI]
    -->

<!ENTITY % Datetime "CDATA" -- информация о дате и времени. Формат даты ISO -->

<!ENTITY % Script "CDATA" -- выражение скрипта -->

<!ENTITY % StyleSheet "CDATA" -- данные таблицы стилей -->

<!ENTITY % FrameTarget "CDATA" - представление в этом фрейме -->

<!ENTITY % Text "CDATA">

<!-- Комбинации параметров -->

<!ENTITY % head.misc "SCRIPT|STYLE|META|LINK|OBJECT" -- повторяющиеся элементы заголовка -->

<!ENTITY % heading "H1|H2|H3|H4|H5|H6">

<!ENTITY % list "UL | OL |  DIR | MENU">

<!ENTITY % preformatted "PRE">

<!ENTITY % Color "CDATA" -- a color using sRGB: #RRGGBB as Hex values -->

<!-- 16 широко известных названий цветов и их значения RGB:

    Black (черный)  	= #000000    Green (зеленый)   = #008000
    Silver (серебряный) = #C0C0C0    Lime (лимонный)   = #00FF00
    Gray (серый)		= #808080    Olive (оливковый) = #808000
    White (белый)		= #FFFFFF    Yellow (желтый)   = #FFFF00
    Maroon (коричневый) = #800000    Navy (синий)      = #000080
    Red (красный)		= #FF0000    Blue (голубой)    = #0000FF
    Purple (пурпурный)  = #800080    Teal   = #008080
    Fuchsia (фуксия)    = #FF00FF    Aqua (бирюзовый)  = #00FFFF
 -->

<!ENTITY % bodycolors "
  bgcolor     %Color;        #IMPLIED  -- цвет фона документа --
  text        %Color;        #IMPLIED  -- цвет текста документа --
  link        %Color;        #IMPLIED  -- цвет ссылок --
  vlink       %Color;        #IMPLIED  -- цвет просмотренных ссылок --
  alink       %Color;        #IMPLIED  -- цвет выбранных ссылок --
  ">

<!--================ Комбинации мнемоник символов =========================-->

<!ENTITY % HTMLlat1 PUBLIC
   "-//W3C//ENTITIES Latin1//EN//HTML"
   "http://www.w3.org/TR/REC-html40-971218/HTMLlat1.ent">
%HTMLlat1;

<!ENTITY % HTMLsymbol PUBLIC
   "-//W3C//ENTITIES Symbols//EN//HTML"
   "http://www.w3.org/TR/REC-html40-971218/HTMLsymbol.ent">
%HTMLsymbol;

<!ENTITY % HTMLspecial PUBLIC
   "-//W3C//ENTITIES Special//EN//HTML"
   "http://www.w3.org/TR/REC-html40-971218/HTMLspecial.ent">
%HTMLspecial;
<!--=================== Общие атрибуты ===============================-->

<!ENTITY % coreattrs
 "id          ID             #IMPLIED  -- уникальнй дентификатор в пределах документа --
  class       CDATA          #IMPLIED  -- разделенный пробелами список классов --
  style       %StyleSheet;   #IMPLIED  -- связанная информация о стиле --
  title       %Text;         #IMPLIED  -- рекомендуемый заголовок/усиление --"
  >

<!ENTITY % i18n
 "lang        %LanguageCode; #IMPLIED  -- код языка --
  dir         (ltr|rtl)      #IMPLIED  -- направление слабого/нейтрального текста --"
  >

<!ENTITY % events
 "onclick     %Script;       #IMPLIED  -- щелчок кнопки указующего устройства --
  ondblclick  %Script;       #IMPLIED  -- двойной щелчок кнопки указующего устройства --
onmousedown %Script;       #IMPLIED  -- нажата кнопка указующего устройства --
  onmouseup   %Script;       #IMPLIED  -- отпущена кнопка указующего устройства --
  onmouseover %Script;       #IMPLIED  -- указатель перемещен на --
onmousemove %Script;       #IMPLIED  -- указатель перемещен в пределы --
  onmouseout  %Script;       #IMPLIED  -- указатель перемещен за пределы --
  onkeypress  %Script;       #IMPLIED  -- клавиша нажата и отпущена --
onkeydown   %Script;       #IMPLIED  -- клавиша нажата --
  onkeyup     %Script;       #IMPLIED  -- клавиша отпущена --"
  >

<!-- Переключатель зарезервированных возможностей -->
<!ENTITY % HTML.Reserved "IGNORE">

<!-- Следующие атрибуты зарезервированы, и, возможно, будут использоваться в будущем -->
<![ %HTML.Reserved; [
<!ENTITY % reserved
 "datasrc     %URI;          #IMPLIED  -- a один или несколько источников данных --
  datafld     CDATA          #IMPLIED  -- имя свойства или столбца --
  dataformatas (plaintext|html) plaintext -- текст или html --"
  >
]]>

<!ENTITY % reserved "">

<!ENTITY % attrs "%coreattrs; %i18n; %events;">

<!ENTITY % align "align (left|center|right|justify)  #IMPLIED"
                   -- по умолчанию left для абзацев с направлением слева направо,
                      right для направления справа налево--
  >

<!--=================== Разметка текста ======================================-->

<!ENTITY % fontstyle
 "TT | I | B | U | S | STRIKE | BIG | SMALL">

<!ENTITY % phrase "EM | STRONG | DFN | CODE |
                   SAMP | KBD | VAR | CITE | ABBR | ACRONYM" >

<!ENTITY % special
   "A | IMG | APPLET | OBJECT | FONT | BASEFONT | BR | SCRIPT |
    MAP | Q | SUB | SUP | SPAN | BDO | IFRAME">

<!ENTITY % formctrl "INPUT | SELECT | TEXTAREA | LABEL | BUTTON">

<!-- %inline; встроенные элементы или элементы "уровня текста"-->
<!ENTITY % inline "#PCDATA | %fontstyle; | %phrase; | %special; | %formctrl;">

<!ELEMENT (%fontstyle;|%phrase;) - - (%inline;)*>
<!ATTLIST (%fontstyle;|%phrase;)
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!ELEMENT (SUB|SUP) - - (%inline;)*    -- верхний и нижний индекс -->
<!ATTLIST (SUB|SUP)
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!ELEMENT SPAN - - (%inline;)*         -- общий контейнер языка/стиля -->
<!ATTLIST SPAN
  %attrs;                              -- %coreattrs, %i18n, %events --
  %reserved;			       -- зарезервировано для использования в будущем --
  >

<!ELEMENT BDO - - (%inline;)*          -- переопределение BiDi интернационализации -->
<!ATTLIST BDO
  %coreattrs;                          -- id, class, style, title --
  lang        %LanguageCode; #IMPLIED  -- код языка --
  dir         (ltr|rtl)      #REQUIRED -- направление --
  >

<!ELEMENT BASEFONT - O EMPTY           -- базовый размер шрифта -->
<!ATTLIST BASEFONT
  id          ID             #IMPLIED  -- уникальный идентификатор в пределах документа --
  size        CDATA          #REQUIRED -- базовый размер шрифта для элементов FONT --
  color       %Color;        #IMPLIED  -- цвет текста --
  face        CDATA          #IMPLIED  -- разделенный запятыми список названий шрифтов --
  >

<!ELEMENT FONT - - (%inline;)*         -- локлаьное переключение на шрифт -->
<!ATTLIST FONT
  %coreattrs;                          -- id, class, style, title --
  %i18n;		               -- lang, dir --
  size        CDATA          #IMPLIED  -- [+|-]nn, например, size="+1", size="4" --
  color       %Color;        #IMPLIED  -- цвет текста --
  face        CDATA          #IMPLIED  -- разделенный запятыми список названий шрифтов --
  >

<!ELEMENT BR - O EMPTY                 -- принудительный переход на новую строку -->
<!ATTLIST BR
  %coreattrs;                          -- id, class, style, title --
  clear       (left|all|right|none) none -- управление обтеканием текста --
  >

<!--================== Модели содержимого HTML ===============================-->

<!--
    В HTML имеется две основных модели содержимого:

        %inline;     элементы уровня символа и текстовые строки
        %block;      элементы типа блока, например абзацы и списки
-->

<!ENTITY % block
     "P | %heading; | %list; | %preformatted; | DL | DIV | CENTER |
      NOSCRIPT | NOFRAMES | BLOCKQUOTE | FORM | ISINDEX | HR |
      TABLE | FIELDSET | ADDRESS">

<!ENTITY % flow "%block; | %inline;">

<!--=================== Тело документа ====================================-->

<!ELEMENT BODY O O (%flow;)* +(INS|DEL) - тело документа  -->
<!ATTLIST BODY
  %attrs;                              -- %coreattrs, %i18n, %events --
  onload          %Script;   #IMPLIED  -- документ загружен --
  onunload        %Script;   #IMPLIED  -- документ удален --
  background      %URI;      #IMPLIED  -- текстура для фона документа --
  %bodycolors;                         -- bgcolor, text, link, vlink, alink --
  >

<!ELEMENT ADDRESS - - ((%inline;)|P)*  -- информация об авторе -->
<!ATTLIST ADDRESS
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!ELEMENT DIV - - (%flow;)*            -- общий контейнер языка/стиля -->
<!ATTLIST DIV
  %attrs;                              -- %coreattrs, %i18n, %events --
  %align;                              -- выравнивание текста --
  %reserved;                           -- зарезервировано для использования в будущем --
  >

<!ELEMENT CENTER - - (%flow;)*         -- сокращение для DIV align=center -->
<!ATTLIST CENTER
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!--================== Элементя якоря ================================-->

<!ENTITY % Shape "(rect|circle|poly|default)">
<!ENTITY % Coords "CDATA" -- разделенный запятыми список длин -->

<!ELEMENT A - - (%inline;)* -(A)       -- якорь -->
<!ATTLIST A
  %attrs;                              -- %coreattrs, %i18n, %events --
  charset     %Charset;      #IMPLIED  -- кодировка связанного ресурса --
  type        %ContentType;  #IMPLIED  -- рекомендуемый тип содержимого --
  name        CDATA          #IMPLIED  -- конец именованной ссылки --
  href        %URI;          #IMPLIED  -- URI связанного ресурса --
  hreflang    %LanguageCode; #IMPLIED  -- код языка --
  target      %FrameTarget;  #IMPLIED  -- генерировать в этом фрейме --
  rel         %LinkTypes;    #IMPLIED  -- типы прямых ссылок --
  rev         %LinkTypes;    #IMPLIED  -- типы обратных ссылок --
  accesskey   %Character;    #IMPLIED  -- клавиша доступа --
  shape       %Shape;        rect      -- для использования с клиентскими
                                          навигационными картами --
  coords      %Coords;       #IMPLIED  -- для использования с клиентскими
                                          навигационными картами --
  tabindex    NUMBER         #IMPLIED  -- положение в последовательности перехода --
  onfocus     %Script;       #IMPLIED  -- фокус перешел к элементу --
  onblur      %Script;       #IMPLIED  -- фокус ушел с элемента --
  >

<!--================== Клиентские навигационные карты ============================-->

<!-- Они могут помещаться в тот же самый документ или
    располагаться в отдельном документе, хотя это поддерживается еще
    не повсеместно -->

<!ELEMENT MAP - - ((%block;)+ | AREA+) -- клиентская навигационная карта -->
<!ATTLIST MAP
  %attrs;                              -- %coreattrs, %i18n, %events --
  name        CDATA          #REQUIRED -- используется в usemap --
  >

<!ELEMENT AREA - O EMPTY               -- область клиентской навигационной карты -->
<!ATTLIST AREA
  %attrs;                              -- %coreattrs, %i18n, %events --
  shape       %Shape;        rect      -- управляет интерпретацией координат --
  coords      %Coords;       #IMPLIED  -- разделенный запятыми список длин --
  href        %URI;          #IMPLIED  -- URI связанного ресурса --
  target      %FrameTarget;  #IMPLIED  -- генерировать в этом фрейме --
  nohref      (nohref)       #IMPLIED  -- с этой областью действие не связано --
  alt         %Text;         #REQUIRED -- краткое описание --
  tabindex    NUMBER         #IMPLIED  -- положение в последовательности перехода --
  accesskey   %Character;    #IMPLIED  -- клавиша доступа --
  onfocus     %Script;       #IMPLIED  -- фокус перешел к элементу --
  onblur      %Script;       #IMPLIED  -- фокус ушел с элемента --
  >

<!--================== Элемент ссылки ==================================-->

<!--
 Значения отношения могут использоваться в основном:

   а) для панелей инструментов/меню в документе при использовании
      с элементом LINK в заголовке документа, например,
        начало, содержание, назад, далее, указатель, конец, справка
   б) для ссылки на отдельную таблицу стилей (rel=stylesheet)
   в) для установки ссылки на скрипт (rel=script)
   г) в таблицах стилей для управления представлением набора узлов
      html в печатных версиях документов
   д) для ссылки на печатную версию данного документа, например,
      на версию в формате postscript или pdf (rel=alternate media=print)
-->

<!ELEMENT LINK - O EMPTY               -- независящая от устройства ссылка -->
<!ATTLIST LINK
  %attrs;                              -- %coreattrs, %i18n, %events --
  charset     %Charset;      #IMPLIED  -- кодировка связанного ресурса --
  href        %URI;          #IMPLIED  -- URI связанного ресурса --
  hreflang    %LanguageCode; #IMPLIED  -- код языка --
  type        %ContentType;  #IMPLIED  -- рекомендуемый тип содержимого --
  rel         %LinkTypes;    #IMPLIED  -- типы прямых ссылок --
  rev         %LinkTypes;    #IMPLIED  -- типы обратных ссылок --
  media       %MediaDesc;    #IMPLIED  -- для представления на этих устройствах --
  target      %FrameTarget;  #IMPLIED  -- генерировать в этом фрейме --
  >

<!--=================== Изображения ===========================================-->

<!-- Длина, определяемая в strict DTD для cellpadding/cellspacing -->
<!ENTITY % Length "CDATA" -- nn в пикселах или nn% в процентах -->
<!ENTITY % MultiLength "CDATA" -- пикселы, проценты или относительная -->

<!ENTITY % MultiLengths "CDATA" - разделенный запятыми список MultiLength -->

<!ENTITY % Pixels "CDATA" - целое число, представляющее длину в пикселах -->

<!ENTITY % IAlign "(top|middle|bottom|left|right)" -- центрировать? -->

<!-- Во избежание проблем с только тестовыми агентами пользователей,
     а также сделать изображения доступными и полезными для пользователей
     с невизуальными агентами, необходимо определять описания в атрибуте ALT и
     не использовать серверные изображения-карты -->
<!ELEMENT IMG - O EMPTY                -- внедренное изображение -->
<!ATTLIST IMG
  %attrs;                              -- %coreattrs, %i18n, %events --
  src         %URI;          #REQUIRED -- URI внедряемого изображения --
  alt         %Text;         #REQUIRED -- краткое описание --
  longdesc    %URI;          #IMPLIED  -- ссылка на длинное описание (дополняет alt) --
  height      %Length;       #IMPLIED  -- переопределение высоты --
  width       %Length;       #IMPLIED  -- переопределение ширины --
  usemap      %URI;          #IMPLIED  -- использовать клиентскую навигационную карту --
  ismap       (ismap)        #IMPLIED  -- использовать серверную навигационную карту --
  align       %IAlign;       #IMPLIED  -- вертикальное или горизонтальное выравнивание --
  border      %Length;       #IMPLIED  -- ширина границы ссылки --
  hspace      %Pixels;       #IMPLIED  -- горизонтальный gutter --
  vspace      %Pixels;       #IMPLIED  -- вертикальный gutter --
  >

<!-- USEMAP указывает на элемент MAP, который может находиться в
 этом же или в другом документе, хотя последнее поддерживается не всегда -->

<!--==================== OBJECT ======================================-->
<!--
 OBJECT используется для внедрения объектов в качестве части страниц HTML,
 другому содержимому должны предшествовать элементы PARAM. Модель смешанного
 содержимого SGML технически мешает такому формальному заданию...
-->

<!ELEMENT OBJECT - - (PARAM | %flow;)*
 -- общий внедренный объект -->
<!ATTLIST OBJECT
  %attrs;                              -- %coreattrs, %i18n, %events --
  declare     (declare)      #IMPLIED  -- объявить, но не инициализировать флаг --
  classid     %URI;          #IMPLIED  -- определяет реализацию --
  codebase    %URI;          #IMPLIED  -- базовый URI для classid, data, archive--
  data        %URI;          #IMPLIED  -- ссылка на аднные объекта --
  type        %ContentType;  #IMPLIED  -- тип содержимого данных --
  codetype    %ContentType;  #IMPLIED  -- тип содержимого кода --
  archive     %URI;          #IMPLIED  -- разделенный пробелами список архивов --
  standby     %Text;         #IMPLIED  -- сообщение, отображаемое во время загрузки --
  height      %Length;       #IMPLIED  -- переопределение высоты --
  width       %Length;       #IMPLIED  -- переопределение ширины --
  usemap      %URI;          #IMPLIED  -- использоватт клиентскую навигационную карту --
  name        CDATA          #IMPLIED  -- передать как часть формы --
  tabindex    NUMBER         #IMPLIED  -- положение в последовательности перехода --
  align       %IAlign;       #IMPLIED  -- вертикальное или горизонтальное выравнивание --
  border      %Length;       #IMPLIED  -- ширина границы ссылки --
  hspace      %Pixels;       #IMPLIED  -- горизонтальный gutter --
  vspace      %Pixels;       #IMPLIED  -- вертикальный gutter --
  %reserved;                           -- зарезервировано для использования в будущем --
  >

<!ELEMENT PARAM - O EMPTY              -- значение именованного свойства -->
<!ATTLIST PARAM
  id          ID             #IMPLIED  -- уникальный идентификатор в пределах документа --
  name        CDATA          #REQUIRED -- имя свойства --
  value       CDATA          #IMPLIED  -- значение свойства --
  valuetype   (DATA|REF|OBJECT) DATA   -- как интерпретировать значение --
  type        %ContentType;  #IMPLIED  -- тип содержимого для значение, если valuetype=ref --
  >

<!--=================== Апплет Java ==================================-->
<!--
  Должен присутствовать один из атрибутов кода или объекта.
  Помещайте элементы PARAM прежде другого содержимого.
-->
<!ELEMENT APPLET - - (PARAM | %flow;)* -- апплет Java -->
<!ATTLIST APPLET
  %coreattrs;                          -- id, class, style, title --
  codebase    %URI;          #IMPLIED  -- необязательный базовый URI для апплета --
  archive     CDATA          #IMPLIED  -- разделенный запятыми список архивов --
  code        CDATA          #IMPLIED  -- файл класса апплета --
  object      CDATA          #IMPLIED  -- файл серийного апплета --
  alt         %Text;         #IMPLIED  -- краткое описание --
  name        CDATA          #IMPLIED  -- позволять апплетам обнаруживать друг друга --
  width       %Length;       #REQUIRED -- начальная ширина --
  height      %Length;       #REQUIRED -- начальная высота --
  align       %IAlign;       #IMPLIED  -- вертикальное или горизонтальное выравнивание --
  hspace      %Pixels;       #IMPLIED  -- горизонтальный gutter --
  vspace      %Pixels;       #IMPLIED  -- вертикальный gutter --
  >

<!--=================== Горизонтальный разделитель ==================================-->

<!ELEMENT HR - O EMPTY - горизонтальный разделитель -->
<!ATTLIST HR
  %coreattrs;                          -- id, class, style, title --
  %events;
  align       (left|center|right) #IMPLIED
  noshade     (noshade)      #IMPLIED
  size        %Pixels;       #IMPLIED
  width       %Length;       #IMPLIED
  >

<!--=================== Абзацы =======================================-->

<!ELEMENT P - O (%inline;)*            -- абзац -->
<!ATTLIST P
  %attrs;                              -- %coreattrs, %i18n, %events --
  %align;                              -- выравнивание, выравнивание текста --
  >

<!--=================== Заголовки =========================================-->

<!--
 Имеется шесть уровней заголовков: от H1 до
  H6 (наименее значимый).
-->

<!ELEMENT (%heading;)  - - (%inline;)* -- заголовок -->
<!ATTLIST (%heading;)
  %attrs;                              -- %coreattrs, %i18n, %events --
  %align;                              -- выравнивание, выравнивание текста --
  >

<!--=================== Форматированный текст ================================-->

<!-- исключает разметку для изображений и изменения размера шрифта -->
<!ENTITY % pre.exclusion "IMG|OBJECT|APPLET|BIG|SMALL|SUB|SUP|FONT|BASEFONT">

<!ELEMENT PRE - - (%inline;)* -(%pre.exclusion;) - форматирвоанный текст  -->
<!ATTLIST PRE
  %attrs;                              -- %coreattrs, %i18n, %events --
  width       NUMBER         #IMPLIED
  >

<!--===================== Встроенные цитаты ==================================-->

<!ELEMENT Q - - (%inline;)*            -- короткая встроенная цитата -->
<!ATTLIST Q
  %attrs;                              -- %coreattrs, %i18n, %events --
  cite        %URI;          #IMPLIED  -- URI исходного документа или сообщения --
  >

<!--=================== Цитаты уровня блока ================================-->

<!ELEMENT BLOCKQUOTE - - (%flow;)*     -- длинная цитата -->
<!ATTLIST BLOCKQUOTE
  %attrs;                              -- %coreattrs, %i18n, %events --
  cite        %URI;          #IMPLIED  -- URI исходного документа или сообщения --
  >

<!--=================== Вставленный/удаленный текст ============================-->

<!-- INS/DEL are handled by inclusion on BODY -->
<!ELEMENT (INS|DEL) - - (%flow;)*      -- вставленный текст, удаленный текст -->
<!ATTLIST (INS|DEL)
  %attrs;                              -- %coreattrs, %i18n, %events --
  cite        %URI;          #IMPLIED  -- информация о причинах изменений --
  datetime    %Datetime;     #IMPLIED  -- дата и время внесения изменений --
  >

<!--=================== Списки ============================================-->

<!-- списки определений - DT -термин, DD - его определение -->

<!ELEMENT DL - - (DT|DD)+              -- список определений -->
<!ATTLIST DL
  %attrs;                              -- %coreattrs, %i18n, %events --
  compact     (compact)      #IMPLIED  -- сокращенное расстояние между элементами --
  >

<!ELEMENT DT - O (%inline;)*           -- термин -->
<!ELEMENT DD - O (%flow;)*             -- определение -->
<!ATTLIST (DT|DD)
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!-- Упорядоченные списки (OL) стиль нумерации

    1   арабские цифры                         1, 2, 3, ...
    a   буквы в нижнем регистре                a, b, c, ...
    A   буквы в верхнем регистре               A, B, C, ...
    i   римские цифры, нижний регистр          i, ii, iii, ...
    I   римские цифры, верхний регистр         I, II, III, ...

    Этот стиль применяется к порядковым номерам, по умолчанию для
    первого элемента списка устанавливается 1.

    Непосредственно в SGML это выразить нельзя вследствие проблем с
    регистром.
-->

<!ENTITY % OLStyle "CDATA"      -- ограничено: "(1|a|A|i|I)" -->

<!ELEMENT OL - - (LI)+                 -- упорядоченный список -->
<!ATTLIST OL
  %attrs;                              -- %coreattrs, %i18n, %events --
  type        %OLStyle;      #IMPLIED  -- numbering style --
  compact     (compact)      #IMPLIED  -- сокращенное расстояние между элементами --
  start       NUMBER         #IMPLIED  -- начальный порядковый номер --
  >

<!-- Unordered Lists (UL) bullet styles -->
<!ENTITY % ULStyle "(disc|square|circle)">

<!ELEMENT UL - - (LI)+                 -- неупорядоченный список -->
<!ATTLIST UL
  %attrs;                              -- %coreattrs, %i18n, %events --
  type        %ULStyle;      #IMPLIED  -- bullet style --
  compact     (compact)      #IMPLIED  -- сокращенное расстояние между элементами --
  >

<!ELEMENT (DIR|MENU) - - (LI)+ -(%block;) -- список каталогов, список меню -->
<!ATTLIST DIR
  %attrs;                              -- %coreattrs, %i18n, %events --
  compact     (compact)      #IMPLIED
  >
<!ATTLIST MENU
  %attrs;                              -- %coreattrs, %i18n, %events --
  compact     (compact)      #IMPLIED
  >

<!ENTITY % LIStyle "CDATA" -- ограничено: "(%ULStyle;|%OLStyle;)" -->

<!ELEMENT LI - O (%flow;)*             -- элемент списка -->
<!ATTLIST LI
  %attrs;                              -- %coreattrs, %i18n, %events --
  type        %LIStyle;      #IMPLIED  -- list item style --
  value       NUMBER         #IMPLIED  -- сброс порядкового номера --
  >

<!--================ Формы ===============================================-->
<!ELEMENT FORM - - (%flow;)* -(FORM)   -- интерактивная форма -->
<!ATTLIST FORM
  %attrs;                              -- %coreattrs, %i18n, %events --
  action      %URI;          #REQUIRED -- дескриптор серверной формы --
  method      (GET|POST)     GET       -- метод HTTP, используемый для отправки формы --
  enctype     %ContentType;  "application/x-www-form-urlencoded"
  onsubmit    %Script;       #IMPLIED  -- форма отправлена --
  onreset     %Script;       #IMPLIED  -- форма сброшена --
  target      %FrameTarget;  #IMPLIED  -- генерировать в этом фрейме --
  accept-charset %Charsets;  #IMPLIED  -- список поддерживаемых наборов символов --
  >

<!-- Each label must not contain more than ONE field -->
<!ELEMENT LABEL - - (%inline;)* -(LABEL) - текст метки поля формы -->
<!ATTLIST LABEL
  %attrs;                              -- %coreattrs, %i18n, %events --
  for         IDREF          #IMPLIED  -- совпадает со значением ID поля --
  accesskey   %Character;    #IMPLIED  -- клавиша доступа --
  onfocus     %Script;       #IMPLIED  -- фокус перешел к элементу --
  onblur      %Script;       #IMPLIED  -- фокус ушел с элемента --
  >

<!ENTITY % InputType
  "(TEXT | PASSWORD | CHECKBOX |
    RADIO | SUBMIT | RESET |
    FILE | HIDDEN | IMAGE | BUTTON)"
   >

<!-- атрибут name обязателен для всех элементов, кроме submit & reset -->
<!ELEMENT INPUT - O EMPTY              -- управляющий элемент формы -->
<!ATTLIST INPUT
  %attrs;                              -- %coreattrs, %i18n, %events --
  type        %InputType;    TEXT      -- что должно быть введено --
  name        CDATA          #IMPLIED  -- передать как часть формы --
  value       CDATA          #IMPLIED  -- обязателен для кнопок с зависимой фиксацией
                                          и флажков --
  checked     (checked)      #IMPLIED  -- для кнопок с зависимой фиксацией
                                          и флажков --
  disabled    (disabled)     #IMPLIED  -- в данном контексте недоступно --
  readonly    (readonly)     #IMPLIED  -- для текста и пароля --
  size        CDATA          #IMPLIED  -- свое для каждого типа поля --
  maxlength   NUMBER         #IMPLIED  -- максимальное число символов для текстовых полей --
  src         %URI;          #IMPLIED  -- для полей с изображениями --
  alt         CDATA          #IMPLIED  -- краткое описание --
  usemap      %URI;          #IMPLIED  -- use клиентская навигационная карта --
  tabindex    NUMBER         #IMPLIED  -- положение в последовательности перехода --
  accesskey   %Character;    #IMPLIED  -- клавиша доступа --
  onfocus     %Script;       #IMPLIED  -- фокус перешел к элементу --
  onblur      %Script;       #IMPLIED  -- фокус ушел с элемента --
  onselect    %Script;       #IMPLIED  -- выделен некоторый текст --
  onchange    %Script;       #IMPLIED  -- изменено значение элемента --
  accept      %ContentTypes; #IMPLIED  -- список типов MIME файлов для загрузки --
  align       %IAlign;       #IMPLIED  -- вертикальное или горизонтальное выравнивание --
  %reserved;                           -- зарезервировано для использования в будущем --
  >

<!ELEMENT SELECT - - (OPTGROUP|OPTION)+ -- выбор вариантов -->
<!ATTLIST SELECT
  %attrs;                              -- %coreattrs, %i18n, %events --
  name        CDATA          #IMPLIED  -- название поля --
  size        NUMBER         #IMPLIED  -- видимые строки --
  multiple    (multiple)     #IMPLIED  -- одиночный выбор по умолчанию --
  disabled    (disabled)     #IMPLIED  -- в данном контексте недоступно --
  tabindex    NUMBER         #IMPLIED  -- положение в последовательности перехода --
  onfocus     %Script;       #IMPLIED  -- фокус перешел к элементу --
  onblur      %Script;       #IMPLIED  -- фокус ушел с элемента --
  onchange    %Script;       #IMPLIED  -- изменено значение элемента --
  %reserved;                           -- зарезервировано для использования в будущем --
  >

<!ELEMENT OPTGROUP - - (OPTION)+ -- группа параметров -->
<!ATTLIST OPTGROUP
  %attrs;                              -- %coreattrs, %i18n, %events --
  disabled    (disabled)     #IMPLIED  -- в данном контексте недоступно --
  label       %Text;         #REQUIRED -- для использования в иерархических меню --
  >

<!ELEMENT OPTION - O (#PCDATA)         -- выбираемый вариант -->
<!ATTLIST OPTION
  %attrs;                              -- %coreattrs, %i18n, %events --
  selected    (selected)     #IMPLIED
  disabled    (disabled)     #IMPLIED  -- в данном контексте недоступно --
  label       %Text;         #IMPLIED  -- для использования в иерархических меню --
  value       CDATA          #IMPLIED  -- по умолчанию - содержимое элемента --
  >

<!ELEMENT TEXTAREA - - (#PCDATA)       -- текстовое поле из нескольких строк -->
<!ATTLIST TEXTAREA
  %attrs;                              -- %coreattrs, %i18n, %events --
  name        CDATA          #IMPLIED
  rows        NUMBER         #REQUIRED
  cols        NUMBER         #REQUIRED
  disabled    (disabled)     #IMPLIED  -- в данном контексте недоступно --
  readonly    (readonly)     #IMPLIED
  tabindex    NUMBER         #IMPLIED  -- положение в последовательности перехода --
  accesskey   %Character;    #IMPLIED  -- клавиша доступа --
  onfocus     %Script;       #IMPLIED  -- фокус перешел к элементу --
  onblur      %Script;       #IMPLIED  -- фокус ушел с элемента --
  onselect    %Script;       #IMPLIED  -- выделен некоторый текст --
  onchange    %Script;       #IMPLIED  -- изменено значение элемента --
  %reserved;                           -- зарезервировано для использования в будущем --
  >

<!--
  #PCDATA используется для решения проблемы смешанного содержимого,
  здесь допустимы только пробельные символы!
 -->
<!ELEMENT FIELDSET - - (#PCDATA,LEGEND,(%flow;)*) - группа управляющих элементов формы -->
<!ATTLIST FIELDSET
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!ELEMENT LEGEND - - (%inline;)*       -- описание набора полей -->
<!ENTITY % LAlign "(top|bottom|left|right)">

<!ATTLIST LEGEND
  %attrs;                              -- %coreattrs, %i18n, %events --
  accesskey   %Character;    #IMPLIED  -- клавиша доступа --
  align       %LAlign;       #IMPLIED  -- относительно набора полей --
  >

<!ELEMENT BUTTON - -
     (%flow;)* -(A|%formctrl;|FORM|ISINDEX|FIELDSET|IFRAME)
     -- кнопка -->
<!ATTLIST BUTTON
  %attrs;                              -- %coreattrs, %i18n, %events --
  name        CDATA          #IMPLIED
  value       CDATA          #IMPLIED  -- отправлено на сервер при передаче --
  type        (button|submit|reset) submit -- для использования в качестве кнопки --
  disabled    (disabled)     #IMPLIED  -- в данном контексте недоступно --
  tabindex    NUMBER         #IMPLIED  -- положение в последовательности перехода --
  accesskey   %Character;    #IMPLIED  -- клавиша доступа --
  onfocus     %Script;       #IMPLIED  -- фокус перешел к элементу --
  onblur      %Script;       #IMPLIED  -- фокус ушел с элемента --
  %reserved;                           -- зарезервировано для использования в будущем --
  >

<!--======================= Таблицы =======================================-->

<!-- IETF HTML table standard, see [RFC1942] -->

<!--
 Атрибут BORDER устанавливает толщину рамки вокруг
 таблицы. По умолчанию используются пикселы.

 Атрибут FRAME определяет, какие части рамки вокруг
 таблицы должны представляться. Значения не совпадают с
 CALS во избежание конфликтов имен с атрибутом VALIGN.

 Значение "border" включено для совместимости с предыдущими версиями
 <TABLE BORDER>, уступив место frame=border и border=implied
 Для <TABLE BORDER=1> введены border=1 и frame=implied. В этом
 случае оно может обрабатываться как frame=border для совместимости
 с браузерами более старых версий.
-->
<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">

<!--
 Атрибут RULES определяет, какие rules между ячейками будут отображаться:

 Если атрибут RULES отсутстввует, предполагается:
     "none", если атрибут BORDER отсутствует или BORDER=0, в противном случае "all"
-->

<!ENTITY % TRules "(none | groups | rows | cols | all)">

<!-- горизонтальное расположение таблицы относительно документа -->
<!ENTITY % TAlign "(left|center|right)">

<!-- атрибуты горизонтального выравнивания содержимого ячейки -->
<!ENTITY % cellhalign
  "align      (left|center|right|justify|char) #IMPLIED
   char       %Character;    #IMPLIED  -- символ выравнивания, например, char=':' --
   charoff    %Length;       #IMPLIED  -- смещение символа выравнивания --"
  >

<!-- атрибуты вертикального выравниваиня содержимого ячейки -->
<!ENTITY % cellvalign
  "valign     (top|middle|bottom|baseline) #IMPLIED"
  >

<!ELEMENT TABLE - -
     (CAPTION?, (COL*|COLGROUP*), THEAD?, TFOOT?, TBODY+)>
<!ELEMENT CAPTION  - - (%inline;)*     -- table caption -->
<!ELEMENT THEAD    - O (TR)+           -- заголовок таблицы -->
<!ELEMENT TFOOT    - O (TR)+           -- нижний заголовок таблицы -->
<!ELEMENT TBODY    O O (TR)+           -- тело таблицы -->
<!ELEMENT COLGROUP - O (col)*          -- группа столбцов таблицы -->
<!ELEMENT COL      - O EMPTY           -- столбец таблицы -->
<!ELEMENT TR       - O (TH|TD)+        -- строка таблицы -->
<!ELEMENT (TH|TD)  - O (%flow;)*       -- ячейка заголовка таблицы, ячейка данных таблицы-->

<!ATTLIST TABLE                        -- элемент таблицы --
  %attrs;                              -- %coreattrs, %i18n, %events --
  summary     %Text;         #IMPLIED  -- назначение/структура речевого вывода--
  width       %Length;       #IMPLIED  -- ширина таблицы --
  border      %Pixels;       #IMPLIED  -- управляет толщиной рамки вокруг таблицы --
  frame       %TFrame;       #IMPLIED  -- какие части рамки должны геренироваться --
  rules       %TRules;       #IMPLIED  -- разделители между строками столбцами --
  cellspacing %Length;       #IMPLIED  -- расстояние между ячейками --
  cellpadding %Length;       #IMPLIED  -- расстояние в ячейках --
  align       %TAlign;       #IMPLIED  -- положение таблицы относительно окна --
  bgcolor     %Color;        #IMPLIED  -- цвет фона ячеек --
  %reserved;                           -- зарезервировано для использования в будущем --
  datapagesize CDATA         #IMPLIED  -- зарезервировано для использования в будущем --
  >

<!ENTITY % CAlign "(top|bottom|left|right)">

<!ATTLIST CAPTION
  %attrs;                              -- %coreattrs, %i18n, %events --
  align       %CAlign;       #IMPLIED  -- относительно таблицы --
  >

<!--
COLGROUP объяединяет ряд элементов COL. В можете
группировать несколько семантически связанных столбцов.
-->
<!ATTLIST COLGROUP
  %attrs;                              -- %coreattrs, %i18n, %events --
  span        NUMBER         1         -- число столбцов в группе по умолчанию --
  width       %MultiLength;  #IMPLIED  -- ширина по умолчанию для вложенных COL --
  %cellhalign;                         -- горизонтальное выравнивание в ячейках --
  %cellvalign;                         -- вертикальное выравнивание в ячейках --
  >

<!--
 Элементы COL определяют свойства выраванивания для ячеек
 в одном или нескольких столбцах.

Атрибут WIDTH определяет ширину столбцов, например,

     width=64        ширина в пикселах
     width=0.5*      относительная ширина 0.5

 Атрибут SPAN приводит к тому, что атрибуты одного элемента
 COL приеняются к нскольким столбцам.
-->
<!ATTLIST COL                          -- группа и свойства столбцов --
  %attrs;                              -- %coreattrs, %i18n, %events --
  span        NUMBER         1         -- атрибуты COL влияют на N столбцов --
  width       %MultiLength;  #IMPLIED  -- указание ширины столбца --
  %cellhalign;                         -- горизонтальное выравнивание в ячейках --
  %cellvalign;                         -- вертикальное выравнивание в ячейках --
  >

<!--
    Используйте THEAD для дублирования заголовков при разрые
    таблицы на страницах ли для представления статических
    заголовков, когда разделы TBODY представляются на
    прокручиваемой панели.

    Используйте TFOOT для дублирования нижних заголовков при разрые
    таблицы на страницах ли для представления статических
    заголовков, когда разделы TBODY представляются на
    прокручиваемой панели.

    Используйте несколько разделов TBODY, если между группами строк
    таблицы необходимы rules.
-->
<!ATTLIST (THEAD|TBODY|TFOOT)          -- table section --
  %attrs;                              -- %coreattrs, %i18n, %events --
  %cellhalign;                         -- горизонтальное выравнивание в ячейках --
  %cellvalign;                         -- вертикальное выравнивание в ячейках --
  >

<!ATTLIST TR                           -- строка таблицы --
  %attrs;                              -- %coreattrs, %i18n, %events --
  %cellhalign;                         -- горизонтальное выравнивание в ячейках --
  %cellvalign;                         -- вертикальное выравнивание в ячейках --
  bgcolor     %Color;        #IMPLIED  -- цвет фона строки --
  >

<!-- Атрибут Scope проще атрибута axes для большинства таблиц -->
<!ENTITY % Scope "(row|col|rowgroup|colgroup)">

<!-- TH - для заголовков, TD 0 для данных, но для ячеек, действующих как то и другое используйте TD -->
<!ATTLIST (TH|TD)                      -- ячейка заголовка или данных --
  %attrs;                              -- %coreattrs, %i18n, %events --
  abbr        %Text;         #IMPLIED  -- аббревиатура ячейки заголовка --
  axis        CDATA          #IMPLIED  -- группы имен связаннх столбцов --
  headers     IDREFS         #IMPLIED  -- список идентификаторов ячеек заголовков --
  scope       %Scope;        #IMPLIED  -- область действия ячеек заголовков --
  rowspan     NUMBER         1         -- число строк, занимаемых ячейкой --
  colspan     NUMBER         1         -- число столбцов, занимаемых ячейкой --
  %cellhalign;                         -- горизонтальное выравнивание в ячейках --
  %cellvalign;                         -- вертикальное выравнивание в ячейках --
  nowrap      (nowrap)       #IMPLIED  -- подавление переноса слов --
  bgcolor     %Color;        #IMPLIED  -- цвет фона ячейки --
  width       %Pixels;       #IMPLIED  -- ширина ячейки --
  height      %Pixels;       #IMPLIED  -- высота ячейки --
  >

<!--================== Фреймы документа ===================================-->

<!--
  Модель содержимого документов HTML зависит от того, следует ли за
  элементом HEAD элемент FRAMESET или BODY. Широко растпространенный
  пропуск начального тега BODY не позволяет определить модель
  содержимого без использования размеченного раздела.
-->

<!-- Feature Switch for frameset documents -->
<!ENTITY % HTML.Frameset "IGNORE">

<![ %HTML.Frameset; [
<!ELEMENT FRAMESET - - ((FRAMESET|FRAME)+ & NOFRAMES?) - подразделение окна -->
<!ATTLIST FRAMESET
  %coreattrs;                          -- id, class, style, title --
  rows        %MultiLengths; #IMPLIED  -- список длин, по умочланию: 100% (1 строка) --
  cols        %MultiLengths; #IMPLIED  -- список длин, по умолчанию: 100% (1 столбец) --
  onload      %Script;       #IMPLIED  -- все фреймы загружены  --
  onunload    %Script;       #IMPLIED  -- все фреймы удалены --
  >
]]>

<![ %HTML.Frameset; [
<!-- зарезервированные имена фреймов начинаются с "_", в противном случае - с буквы -->
<!ELEMENT FRAME - O EMPTY              -- вложенное окно -->
<!ATTLIST FRAME
  %coreattrs;                          -- id, class, style, title --
  longdesc    %URI;          #IMPLIED  -- ссылка на длинное описание (дополняет title) --
  name        CDATA          #IMPLIED  -- имя целевого фрейма --
  src         %URI;          #IMPLIED  -- источник содержимого фрейма --
  frameborder (1|0)          1         -- нужны границы фрейма? --
  marginwidth %Pixels;       #IMPLIED  -- ширина полей в пикселах --
  marginheight %Pixels;      #IMPLIED  -- высотав полей в пикселах --
  noresize    (noresize)     #IMPLIED  -- позволить пользователям изменять размеры фрейма? --
  scrolling   (yes|no|auto)  auto      -- наличие полосы прокрутки --
  >
]]>

<!ELEMENT IFRAME - - (%flow;)*         -- встроенное вложенное окно -->
<!ATTLIST IFRAME
  %coreattrs;                          -- id, class, style, title --
  longdesc    %URI;          #IMPLIED  -- ссылка на длинное описание (дополняет title) --
  name        CDATA          #IMPLIED  -- имя целевого фрейма --
  src         %URI;          #IMPLIED  -- источник содержимого фрейма --
  frameborder (1|0)          1         -- нужны границы фрейма? --
  marginwidth %Pixels;       #IMPLIED  -- ширина полей в пикселах --
  marginheight %Pixels;      #IMPLIED  -- высота полей в пикселах --
  scrolling   (yes|no|auto)  auto      -- нужна ли полоса прокрутки --
  align       %IAlign;       #IMPLIED  -- вертикальное или горизонтальное выравнивание --
  height      %Length;       #IMPLIED  -- высота фрейма --
  width       %Length;       #IMPLIED  -- ширина фрейма --
  >

<![ %HTML.Frameset; [
<!ENTITY % noframes.content "(BODY) -(NOFRAMES)">
]]>

<!ENTITY % noframes.content "(%flow;)*">

<!ELEMENT NOFRAMES - - %noframes.content;
 -- контейнер альтернативного содержимого для представления без фреймов -->
<!ATTLIST NOFRAMES
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!--================ Заголовок документа =======================================-->
<!-- %head.misc; определяется ранее как "SCRIPT|STYLE|META|LINK|OBJECT" -->
<!ENTITY % head.content "TITLE & ISINDEX? & BASE?">

<!ELEMENT HEAD O O (%head.content;) +(%head.misc;) - заголовок документа -->
<!ATTLIST HEAD
  %i18n;                               -- lang, dir --
  profile     %URI;          #IMPLIED  -- именованный словарь метаинформации --
  >

<!-- Элемент TITLE не считается частью потока текста.
     Он должен отображаться, например, в виде заголовка страницы
     или окна. У кажого документа должен быть ровно один заголовок.
    -->
<!ELEMENT TITLE - - (#PCDATA) -(%head.misc;) -- заголовок документа -->
<!ATTLIST TITLE %i18n>

<!ELEMENT ISINDEX - O EMPTY            -- запрос из одной строки -->
<!ATTLIST ISINDEX
  %coreattrs;                          -- id, class, style, title --
  %i18n;                               -- lang, dir --
  prompt      %Text;         #IMPLIED  -- сообщение запроса -->

<!ELEMENT BASE - O EMPTY               -- базовый URI документа -->
<!ATTLIST BASE
  href        %URI;          #IMPLIED  -- URI, служащий базовым --
  target      %FrameTarget;  #IMPLIED  -- генерировать в этом фрейме --
  >

<!ELEMENT META - O EMPTY               -- общая метаинформация -->
<!ATTLIST META
  %i18n;                               -- lang, dir, для использования с содержимым --
  http-equiv  NAME           #IMPLIED  -- HTTP имя заголовка ответа --
  name        NAME           #IMPLIED  -- имя метаинформации --
  content     CDATA          #REQUIRED -- связанная информация --
  scheme      CDATA          #IMPLIED  -- выбор формы содержимого --
  >

<!ELEMENT STYLE - - %StyleSheet        -- информация о стиле -->
<!ATTLIST STYLE
  %i18n;                               -- lang, dir, для использования в заголовке --
  type        %ContentType;  #REQUIRED -- тип содержимого языка стиля --
  media       %MediaDesc;    #IMPLIED  -- для использвоания с этими устройствами --
  title       %Text;         #IMPLIED  -- рекомендуемый заголовок --
  >

<!ELEMENT SCRIPT - - %Script;          -- выражения скрипта -->
<!ATTLIST SCRIPT
  charset     %Charset;      #IMPLIED  -- кодировка связанного ресурса --
  type        %ContentType;  #REQUIRED -- тип содержимого языка скрипта --
  language    CDATA          #IMPLIED  -- предопределенное имя языка скрипта --
  src         %URI;          #IMPLIED  -- URI внешнего скрипта --
  defer       (defer)        #IMPLIED  -- агент пользователя может отложить выполнение
                                          скрипта --
  event       CDATA          #IMPLIED  -- зарезервировано для использования в будущем --
  for         %URI;          #IMPLIED  -- зарезервировано для использования в будущем --
  >

<!ELEMENT NOSCRIPT - - (%flow;)*
  -- контейнер альтернативного содержимого для представления без скриптов -->
<!ATTLIST NOSCRIPT
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!--================ Структура документа ==================================-->
<!ENTITY % version "version CDATA #FIXED '%HTML.Version;'">

<![ %HTML.Frameset; [
<!ENTITY % html.content "HEAD, FRAMESET">
]]>

<!ENTITY % html.content "HEAD, BODY">

<!ELEMENT HTML O O (%html.content;)    -- корневой элемент документа -->
<!ATTLIST HTML
  %i18n;                               -- lang, dir --
  %version;
  >


Замечания о работе, реализации и разработке

Приложение Б: Замечания о работе, реализации и разработке

  1. Замечания о недопустимых документах
  2. Специальные символы в значениях атрибутов URI
    1. Символы, не входящие в набор ASCII, в значениях атрибутов URI
    2. Амперсанды в значениях атрибутов URI
  3. Замечания по реализации SGML
    1. Разрывы строк
    2. Указание данных не в формате HTML
      • Содержимое элемента
      • Значения атрибутов
    3. Возможности SGML с ограниченной поддержкой
    4. Логические атрибуты
    5. Отмеченные разделы
    6. Инструкции по обработке
    7. Сокращенная разметка
  4. Замечания о содействии поисковым машинам в индексировании веб-сайта
    1. Поисковые роботы
      • Файл robots.txt
      • Роботы и элемент META
  5. Замечания о таблицах
    1. Логическое обоснование дизайна
      • Динамическое переформатирование
      • Последовательное представление
      • Структура и представление
      • Группы строк и столбцов
      • Доступность
    2. Алгоритмы рекомендуемой компоновки
      • Алгоритм фиксированной компоновки
      • Алгоритм автоматической компоновки
  6. Замечания о формах
    1. Последовательное отображение
    2. Будущие проекты
  7. Замечания о скриптах
    1. Зарезервированный синтаксис для будущих макросов скриптов
      • Практики макросов скриптов в настоящее время
  8. Замечания о фреймах
  9. Замечания о доступности
  10. Замечания о защите
    1. Вопросы защиты для форм

Следующие замечания являются информацтивными, а не нормативными. Несмотря на использование таких слов как "необходимо" и "следует", все требования данного раздела указаны в других частях спецификации.

B.1 Замечания о недопустимых документах

В данной спецификации не определяется, как соответствующие агенты пользователей должна обрабатывать общие ошибочные состояния, включая поведение агентов пользователей в случае, когда они встречают элементы, атрибуты, значения атрибутов или объекты, не указанные в данном документе.

Однако с целью содействия экспериментам и совместимости между реализациями различных версий HTML рекомендуется следующее поведение:

  • Если агент пользователя встречает неизвестный элемент, он должен попытаться представить его содержимое.
  • Если агент пользователя встречает неизвестный атрибут, он должен проигнорировать всю спецификацию атрибута (т.е. атрибут и его значение).
  • Если агент пользователя стречает неизвестное значение атрибута, он должен использовать значение по умолчанию.
  • Если агент пользователя встречает необъявленный объект, этот объект должен обрабатываться как символьные данные.

кроме того, агентам пользователей рекомендуется уведомлять пользователей о таких ошибках.

Поскольку агенты пользователей могут по-разному обрабатывать ошибочные состояния, авторы и пользователи не должны полагаться на определенное поведение в случае возникновения ошибки.

В спецификации HTML 2.0 ([RFC1866]) замечено, что многие агенты пользователей HTML 2.0 предполагают, что документ, которые не начинается с объявления типа документа, относится к спецификации HTML 2.0. Как показывает опыт, это некорректное предположение, данная спецификация не рекомендует такое поведение.

Из соображений совместимости авторы не должны "дополнять" HTML имеющимися механизмами SGML (например, расширяя DTD, добавляя новый набор определений комбинаций и т.д.).

B.2 Специальные символы в значениях атрибутов URI

B.2.1 Символы, не входящие в набор ASCII, в значениях атрибутов URI

Хотя URI и не включают символы, не входящие в набор ASCII, (см. [URI], раздел 2.1) авторы иногда указывают их в значениях атрибутоах, в которых должны указываться URI (например, в атрибуты, определенные как %URI; в DTD). Например, следующее значение атрибута href недопустимо:

<A href="http://foo.org/Håkon">...</A>

Для обработки символов, не входящих в набор ASCII, в таких случаях агентам пользователей рекомендуется:

  1. Представлять каждый символ UTF-8 (см. [RFC2044]) как один или несколько байт.
  2. Выделять эти байты с помощью механизма выделения URI (т.е. путем преобразования каждого байта в %HH, где HH - шестнадцатеричная запись значения байта).

Эта процедура приводит к созданию синтаксически допустимого URI (в соответствии с [RFC1738], раздел 2.2 или [RFC2141], раздел 2), не зависящему от кодировки символов, с использованием которой может быть закодирован документ HTML, в котором указан этот URI.

Примечание. Более старые агенты пользователей обрабатывают URI в HTML тривиальным способом, исопльзуя байты кодировки символов, в которой получен документ. Некоторые более старые документы HTML используют эту практику и при транскодировании поверждаются. Агенты пользователей, которым необходимо обрабатывать такие документа, при получении URI, содержащего не входящие в допустимый набор символы, должны сначала использовать приеобразование на базе UTF-8. Только если резултирующий URI не определяется, они должны пытатья построить URI на базе байтов кодировки символов, в которой получен документ.

Примечание. Такое жп преобразование на базе UTF-8 должно применяться и к значениям атрибута name элемента A.

B.2.2 Амперсанды в значениях атрибутов URI

URI, построенный при передаче формы, может использоваться как ссылка типа якоря (например, атрибут href для элемента A). К сожалению, использование символа "&" для разделения полей формы влияет на его использование в значениях атрибутов SGML для разделения ссылок на символы. Например, чтобы использовать URI "http://host/?x=1&y=2" как ссылку, его необходимо записать <A href="http://host/?x=1&#38;y=2"> или <A href="http://host/?x=1&amp;y=2">.

Мы рекомендуем разработчикам серверов HTTP, и особенно разработчикам CGI, обеспечивать поддержку использования ";" вместо "&", чтобы решить для атворов проблему выделения символов "&" в такой манере.

B.3 Замечания по реализации SGML

B.3.1 Разрывы строк

В SGML (см. [ISO8879], раздел 7.6.1) указано, что разрыв строки, непосредственно следующий за начальным тегом, должен игнорироваться, как и разрыв строки непосредственно перед конечным тегом. Это применяется ко всем элементам HTML без исключения.

Следующие два примера кода HTML должны представляться одинаково:

<P>Паша смотрит телевизор.</P>

<P>
Паша смотрит телевизор.
</P>

Также одинаково должны представляться следующие два примера:

<A>Мой любимый сайт</A>

<A>
Мой любимый сайт
</A>

B.3.2 Указание данных не в формате HTML

Данные скрипта и стиля могут присутствовать как содержимео элемента или значение атрибута. В следующих разделах описано разграничение между разметкой HTML и другими данными.

Примечание. В DTD данные скрипта и стиля определяются как CDATA и для содержимого элемента, и для значений атрибутов. Парвила SGML не допускают ссылок на символы в содержимом элементов CDATA, но допускают их в значениях атрибутов CDATA. Авторам следует обращать особенное внимание при вырезании и вставке данных скриптов и стилей из содержимого элемента в значения атрибутов.

Такая ассимметрия, кроме того, означает, что при транскодировании из более обширной кодировки символов в менее обширную транскодер не может просто заменить непреобразуемые символы в данных скрипта или стиля на соответствующие числовые ссылки на символы; он должен провести синтаксический анализ документа HTML и иметь инфомрацию о синтакисисе каждого языка скриптов и стилей для корректной обработки данных.

Содержимое элемента

Если данные скрипта или стиля являются содержимым элемента (SCRIPT и STYLE), данные начинаются непосредственно за начальным тегом элемента и заканчиваются первым разделителем ETAGO ("</"), за которым следует буква ([a-zA-Z]); обратите внимание, что это не обязательно конечный тег элемента. Поэтому авторам следует выделять последовательности "</" в содержимом. Механизмы такого выделения специфичны для каждого языка скриптов или таблиц чтилей.

ПРИМЕР НЕДОПУСТИМОГО ИСПОЛЬЗОВАНИЯ:
Следующие данные скрипта некорректно содержат последовательность "</" (как часть "</EM>") перед конечным тегом SCRIPT:

    <SCRIPT type="text/javascript">
      document.write ("<EM>Так работать не будет</EM>")
    </SCRIPT>

В JavaScript этот код можно представить допустимым образом, скрыв разделитель ETAGO перед начальной буквой SGML:

    <SCRIPT type="text/javascript">
      document.write ("<EM>Так работать будет<\/EM>")
    </SCRIPT>

В Tcl этого можно достичь следующим образом:

    <SCRIPT type="text/tcl">
      document write "<EM>Это будет работать<\/EM>"
    </SCRIPT>

В VBScript проблемы можно избежать с помощью функции Chr():

    "<EM>Это будет работать<" & Chr(47) & "EM>"

Значения атрибутов

Если данные скрипта или стиля являются значением атрибута (style или атрибутам внутреннего события), авторам следует выделять разделители-одинарные или двойные кавычки в значениях в соответствии с соглашениями языка скрипта или стиля. Вторам также следует выделять экземпляры "&", если этот "&" не обозначает начало ссылки на символ.

  • '"' должно записываться как "&quot;" или "&#34;"
  • '&' должно записываться как "&amp;" или "&#38;"

Таким образом, например, можно записать:

 <INPUT name="num" value="0"
 onchange="if (compare(this.value, &quot;Справка&quot;)) {gethelp()}">

B.3.3 Возможности SGML с ограниченной поддержкой

Системы SGML, соответствующие [ISO8879], должны распознавать ряд возможностей, не поддерживаемых всеми агентами пользователей HTML. Авторам рекомендуется избегать исопльзования этих функций.

B.3.4 Логические атрибуты

Авторам следует знать, что многие агенты пользователей распознают только минимизированную форму логических атрибутов, но не полную.

Например, авторам можно указать:

<OPTION selected>

вместо

<OPTION selected="selected">

B.3.5 Отмеченные разделы

Отмеченные выбранные варианты играют роль, подобную конструкции #ifdef, распознаваемой препроцессором языка C.

<![INCLUDE[
 <!-- это будет включено -->
]]>

<![IGNORE[
 <!-- это будет игнорироваться -->
]]>

В SGML также определяется использование размеченных разделов для содержимого CDATA, в котором "<" обрабатывается не как начало тега, например,

<![CDATA[
 <an> пример разметки <sgml>, не вызывающий
 <проблем> при записи < и т.д.
]]>

Сигнальным символом того, что агент пользвоателя не распознает размеченный раздел, является представление "]]>", когда агент пользователя по ошибке использует первый символ ">" как конец тега, начинающегося с "<![".

B.3.6 Инструкции по обработке

Инструкции по обработке - это механизм захвата платформозависимых идиот\м. Инструкция начинается с <? И заканчивается символом >

<?инструкция >

Например:

<?>
<?style tt = font courier>
<?page break>
<?experiment> ... <?/experiment>

Авторам следует знать, что многие агенты пользвоателей представляют инструкции по обработке как часть текста документа.

B.3.7 Сокращенная разметка

Некоторые конструкции SGML SHORTTAG позволяют сэкономить время на набор, но не добавляют выразительных способностей в приложение SGML. Хотя такие конструкции технически не вносят двусмысленности, они снижают надежность документов, особенно если язык расширен и включает новые элементы. Таким образом, в то время как конструкции SHORTTAG SGML, относящиеся к атрибутам, широко используются и реализуются, те же конструкции, относящиеся к элементам, не распространены. Использующие их докменты являются соответствующими документами SGML, но вряд ли будут работать со многими существующими средствами HTML.

конструкции SHORTTAG:

  • теги NET:
    <имя/.../
  • Закрытый начальный тег:
    <имя1<имя2>
  • Пустой начальный тег:
    <>
  • Пустой конечный тег:
    </>

B.4 Замечания о содейтсвии поисковым машинам в индексировании веб-сайта

В этом разделе приводятся некоторые простые предложения, которые сделают документы более доступными для поисковых машин.

Определите язык документа
В глобальном контексте Web важно знать, на каком языке создается страница. Это обсуждается в разделе о языковой информации.
Укажите языковые варианты документа
Если Вы подготовили переводы документа на другие языки, используйте элемент LINK для ссылки на них. Это позволит индексным машинам предлагать пользователям результаты поиска на предпочитаемом пользователем языке, независимо от построения запроса. Например, следующие ссылки предлагают поисковой машине французскую и немецкую версии:
<LINK rel="alternate"
         type="text/html"
         href="mydoc-fr.html" hreflang="fr"
         lang="fr" title="La vie souterraine">
<LINK rel="alternate"
         type="text/html"
         href="mydoc-de.html" hreflang="de"
         lang="de" title="Das Leben im Untergrund">
Задавайте ключевые слова и описания
Некоторые индексирующие машины проводят поиск элементов META, в которых определяется разделенный запятыми списо ключевых слов/фраз или дается краткое описание. Поисковые машины могут представлять эти ключевые слова как результат поиска. Значение атрибута name, найденное атрибутом поиска, не определяется в данной специфиации. Рассмотрим следующие примеры,
<META name="keywords" content="отпуск,Греция,солнце">
<META name="description" content="Идиллический отпуск в Европе">
Укажите начало набора
Наборы документов или представлений систем обработки текстов часто переводятся в наборы документов HTML. Для поисковых машин полезно указать ссылку на начало набора в дополнение к попаданию страницы в результаты поиска. Вы можете помочь поисковым машинам с помощью элемента LINK с атрибутом rel="begin" и TITLE, как показано в следующем примере:

<LINK rel="begin"
         type="text/html"
         href="page1.html"
         title="Общая теория относительности">
Предоставьте роботам инструкции по индексированию
Люди могут удивиться, узнав, что их сайт проиндексирован роботом, и не получил доступа к значительной части сайта. Многие Web-роботы предлагают администраторам Web-сайтов возможности ограничения действий роботов. Это достигается с помощью двух механизмов: файла "robots.txt" и элемента the META в документах HTML, описанного далее.

B.4.1 Поисковые роботы

Файл robots.txt

Когда робот просматривает Web-сайт, например, http://www.foobar.com/, сначала он проверяет файл http://www.foobar.com/robots.txt. Если этот документ обнаружен, он анализирует его содержимое и смотрет, позволено ли загрузить документ. Вы можете настроить файл robots.txt только для конкретных роботов и запретить доступ к определенным каталогам или файлам.

Вот пример файла robots.txt, запрещающего доступ ко всему сайт всем роботам

        User-agent: *    # применяется ко всем роботам
        Disallow: /      # запретить индексацию всех страниц

Робот просто найдет файл "/robots.txt" URI на Вашем сайте, где сайт - это сервер HTTP, работающий на определенной машине и порте. Вот некоторые примеры расположения файла robots.txt:

URI сайта | URI файла robots.txt
http://www.w3.org/ | http://www.w3.org/robots.txt
http://www.w3.org:80/ | http://www.w3.org:80/robots.txt
http://www.w3.org:1234/ | http://www.w3.org:1234/robots.txt
http://w3.org/ | http://w3.org/robots.txt

На одном сайте может быть один файл "/robots.txt". Точнее, не следует помещать файлы "robots.txt" в каталоги пользователей, поскольку робот их не найдет. Если Вы хотите, чтобы пользователи могли создавать свои собственные файлы "robots.txt", нужно будет объединить их все в один файл "/robots.txt". Если Вы не сделаете так, пользователи могут использовать вместо этого тег Robots META.

Некоторые советы: URI учитывают регистр, и строка "/robots.txt" должна всегда быть в нижнем регистре. Пустые строки запрещены.

В каждой записи должно быть ровно одно поле "User-agent". Робот должен свободно интерпретировать это поле. Рекомендуется строка без учета регистра, совпадающая с именем и не включающая информацию о версии.

Если указано значение "*", запись описывает политику доступа по умолчанию для любого робота, не соответствующего другим записям. В файле "/robots.txt" не может быть несколько таких записей.

В поле "Disallow" задается частичный URI, который посещать запрещено. Это может быть полный или частичный путь; любой URI, начинающийся с этого значения, нельзя будет загрузить. Например,

    Disallow: /help запрещает доступ к /help.html и /help/index.html, в то время как
    Disallow: /help/ запретит доступ к /help/index.html, но разрешит доступ /help.html.

Пустое значение параметра "Disallow" означает, что все URI могут загружаться. В файле robots.txt должно быть по крайней мере одно поле "Disallow" .

Роботы и элемент META

Элемент META позволяет авторам документов HTML сообщать роботам о том, может ли документ быть проиндексирован или может ли он использоваться для получения дополнительных ссылок. Для этого не требуется вмешательство администратора сервера.

В следующем примере робот не будет ни индексировать сайт, ни анализировать ссылки.

<META name="ROBOTS" content="NOINDEX, NOFOLLOW">

В атрибуте content могут содержаться следующие слова: ALL, INDEX, NOFOLLOW, NOINDEX. Значения атрибутов name и the учитывают регистр.

Примечание. В начале 1997 года это использовалось только несколькими роботами, но в этой области ожидается изменение с повышением интереса к управлению работой роботов.

B.5 Замечания о таблицах

B.5.1 Логическое обоснование дизайна

Модель таблиц HTML явилась результатом изучения существующих моделей таблиц SGML, обработки таблиц в широко распространенных пакетах обработки текстов и широкого диапазона техник компоновки таблиц в журналах, книгах и других печатных документах. Эта модель выбрана так, чтобы позволить проще выражать таблицы с возможной дополнительной сложностью. Это позволяет производить разметку таблиц HTML с помощью текстовых редакторов и сокращает расходы на изучение и подготовку к работе. Это свойство очень важно для HTML.

Все чаще и чаще люди создают таблицы путем преобразования из документов других форматов или создавая их непосредственно в редакторах WYSIWYG. Очень важно, что модель таблиц HTML может использоваться в этих средствах разработки. Это влияет на представление ячеек, занимающих несколько строк или столбцов, и на выравнивание и другие свойства представления, связанные с группами ячеек.

Динамическое переформатирование

Главным принципом модели таблиц HTML является то, что автор не управляет изменением размера таблицы пользователем, используемыми шрифтами и т.д. Это приводит к тому, что задавать ширину столбца в пикселах становится рискованно. Вместо этого таблицы должны поддерживать динамическое изменение размера и соответствовать текущему размеру окна и шрифтам. Авторы могут определять рекомендуемые параметры типа относительной ширины столбцов, но агенты пользователей должны проверять, достаточна ли ширина столбца для представления самого широкого элемента содержимого ячейки. Если спецификацию автора можно заменить, относительные ширины отдельных столбцов не должны слишком изменяться.

Последовательное представление

Для больших таблиц или медленных сетевых содинений очень важно последовательное представление таблиц. Агенты пользователей должны иметь возможность начинать отображение таблицы до получения всех данных. Ширина окна по умолчанию для большинства агентов пользователей составляет около 80 символов, а рисунки для большинства страниц HTML состаются с учетом этого числа. Указывая число столбцов и включая условия управления шириной таблицы и шириной различных столбцов, авторы могут дават агентам пользователей подсказки, обеспечивающие последовательное представление содержимого таблицы.

Для последовательного представления браузеру необходимо число столбцов и их ширина. Шириной таблицы по умолчанию считается текущий размер окна (width="100%"). Это можно изменить, установив атрибут width-TABLE элемента TABLE. По умолчанию все столбцы имеют одинаковую ширину, но можно определить ширину стольбца с помощью элементов COL до начала таблицы.

Остается еще проблема числа столбцов. Некоторые предлагают дождаться получения первой строки таблицы, но на это может потребоваться продолжительное время, если в ячейках содержится много информации. В целом при последовательном представлении авторм имеет смысл явно указывать число столбцов в элементе TABLE.

Авторам по-прежнему необходима возможность уведомелния агентов пользователей о том, следует ли использовать последовательное представление или определять размер таблицы автоматически для соответствия содержимому ячейки. В двухпроходном режиме автоматического определения рзмера число столбцов определяется на первом проходе. В последовательном режиме число столбцов должно устанавливаться с начала. Имеет смысл установить для атрибута cols значение, равное числу столбцов, а не использовать атрибуты "layout" (например, layout="fixed" или layout="auto").

Структура и представление

В HTML различается структурная разметка, такая как абзацы и цитаты, и средства предствления, такие как поля, шрифты, цвета и т.д. Как это различие влияет на таблицы? С точки зрения пуриста выравнивание текста в ячейках таблицы и границы между ячейками являются вопросом отображения, а не структуры. На практике, однако, их имеет смысл группировать со структурной информацией, поскольку эти свойства легко переносятся из одного приложения в другое. Модель таблиц HTML перекладывает большую часть информации о представлении на связанные таблицы стилей. Модель, представленная в данной спецификации, разработана так, чтобы использовать преимущества таких таблиц стилей, но таблицы стилей не являются обязательными.

Используемые в настоящее время издательские пакеты предоставляют очень богатые возможности по представлению таблиц, и было бы непрактично воспроизводить эти возможности в HTML без превращения HTML в сложный текстовый формат типа RTF или MIF. Однако, в данной спецификации авторам предлагается возможность выбора из ряда широко использумых классов или типов границы. Атрибут frame управляет внешним видом рамки вокруг таблицы, в то время как атрибут rules определяет выбор rulings в таблице. Более богатый уровень управления будет поддерживаться с помощью аннотаций по представлению. Атрибут style может использоваться для определения информации о представлении отдельных элементов. Дальнейшая инфомрация о представлении может задаваться с помощью элемента STYLE в заголовке документа или с помощью связанных таблиц стилей.

В процессе разработки данной спецификации был изучен ряд вопросов по заданию шаблонов обрамления для таблиц. Один из вопросов относится к видам возможных выражений. Включение поддержки вычитания и сложения краев приводит к довольно сложным алгоритмам. Например, работа по обеспечению поддержки атрибутов frame и rules всеми элементами для представления таблиц привела к алгоритму определения того, отображается ли определенная часть рамки таблицы, или нет, из 24 шагов. Даже такая сложность не обеспечивает достаточного управления представлением, отвечающего всем нуждам предсатвления таблиц. Текущая спецификация умышленно придерживается простой интуитивной модели, достаточной в большинстве случаев. Для стандартизации более сложного подхода необходима дальнейшая экспериментальная работа.

Группы строк и столбцов

в данной спецификации определяется надмножество более простой модели, представленной в более ранней работе по HTML+. Считается, что таблицы формируются из необязатеьлного заголовка и последовательности строк, которая, в свою очередь, состоит из последовательности ячеек. Затем эта модель различает ячейки заголовка и данных и позволяет ячейкам занимать несколько строк или столбцов.

Следуя модели таблиц CALS (см. [CALS]), данная спецификация позволяет группировать строки таблицы в разделы заголовка, тела и нижнего заголовка. Это упрощает представление информации об отображении и может использоваться для повторения заголовков таблицы при переносе таблиц или для обеспечения постоянных заголовков при прокручиваемой панели тела таблицы. В разметке раздел нижнего заголовка помещается перед разделом тела таблицы. Такая оптимизация используется в CALS для работы с длинными таблицами. Это позволяет генерировать нижний заголовок, не дожидаясь обработки всей таблицы.

Доступность

Для людей с плохим зрением HTML предлагает упрощение использования графического интерфейса пользоваетля на базе окон. Модель таблиц HTML включает атрибуты отметки каждой ячейки для поддержки высококачественного преобразования текста в речь. Те же атрибуты могут использоваться для поддержки автоматизированного импорта и экспорта данных таблицы в базы данных и электронные таблицы.

B.5.2 Алгоритмы рекомендуемой компоновки

Если в атрибуте cols элемента TABLE определяется число столбцов, таблица может представляться с использованием фиксирвоанного расположения, в противном случае должен использоваться описанный ниже алгоритм автоматической компоновки.

Если атрибут width не указан, визуальные агенты пользователей должны использовать при форматировании значение по умочланию - 100%.

Агентам пользователей рекомендуется расширять таблицы за пределы значения, указанного в атрибуте width, в случаях, когда содержимое ячейки не входит в нее. Агенты пользователей, изменяющие указанную ширину, должны делать это не без причины. Агенты пользователей могут разбивать слова на строки во избежание использования горизонтальной прокрутки.

Для компоновки агенты пользователей должны полагать, что заголовки таблиц (задавемые элементом CAPTION) подобны ячейкам. Каждый заголовок является ячейкой, занимающей все столбцы таблицы, если он располагается внизу или вверху таблицы, и захватывающей все строки таблицы, если он располагается слева или справа.

Алгоритм фиксированной компоновки

В этом алгоритме считается, что число столбцов известно. Ширина столбцов по умолчанию должна быть одинаковая. Авторы могут переопределять это путем указания относительной или абсолютной ширины столбцов с помощью элементов COLGROUP или COL. Ширина таблицы по умолчанию - все пространство между левым и правым полями, но ее можно переобпределить с помощью атрибута width элемента TABLE или определить из абсолютной ширины столбцов. При использовании как абсолютных, так и относительных ширин столбцов, первым шагом является распределение пространства под столбцы с фиксированной шириной. После этого оставшееся пространство делится для столбцов с относительной шириной.

Одного только синтакисиса таблицы недостаточно для гарантии соответствия значений атрибутов. Например, число столбцов, определяемое атрибутом cols, может не совпадать с числом столбцов, определяемым элементами COL. В свою очередь, это может не соответствовать числу столбцов, определяемому из ячеек таблицы. Затем проблемы возникают, если столбцы чересчур узкие, и содержимое не входит в ячейку. Ширина таблицы, указанная в элементе TABLE element или COL, может привести к переполнению ячейки. Агентам пользователей рекомендуется корректно выходить и таких ситуаций, например, путем переноса слов и пересортировки и разбивки слов, если места переноса неизвестны.

В случае, если переполнение ячейки вызывает неделимый элемент, агент пользователя может отрегулировать ширины столбцов и по-новому представить таблицу. В худшем случае, если настройка ширины стоолбца и прокрутка невозможны, можно обрезать содержимое. В любом случае, если содержимое ячейки образается или разбивается, об этом соответсвующим образом должно быть сообщено пользователю.

Алгоритм автоматической компоновки

Если атрибут COLS а начальном теге таблицы отсутствует, агент пользователя должен использовать следующий алгоритм автоматической компоновки. В нем используется два прохода данных таблицы и линейное масштабирование размера таблицы.

На первом проходе перенос строк отключен, а агент пользователя контролирует минимальную и максимальную ширину каждой ячейки. Максимальная ширина определяется самой широкой строкой. Поскольку разбивка строк отключена, абзацы обрабатываются ка кдлинные строки, если только они не разбиты с помощью элементов BR. Минимальная ширина определяется самым широким элементом текста (словом, изображением и т.д.) с учетом начальных отсутпов, маркеров и т.д. Другими словами, необходимо определить минимальную ширину, которая понадобится ячейке в отдльеном окне без переполнения. Разрешение агентам пользователей разбивать слова уменьшит необходимость в горизонтальной прокрутке и обрезание содержимого ячейки.

Этот процесс также применяется к вложенным в ячейки таблицам. Минимальная и максимальная ширина ячеек во вложенных таблицах используются для определения минимальной и максимальной ширины этих таблиц и, следовательно, для внешней таблицы. Алгоритм линейный с совокупным содержимым ячейки, и, широко говоря, не зависит от уровня вложенности.

Для выравнивания символов содержимого ячейки этот алгоритм хранит три значения минимума/максимума для каждой ячейки: Left of align char, right of align char и unaligned. Минимальная ширина столбца: max(min_left + min_right, min_non-aligned).

Минимальная и максимальная ширина ячейки используются для определения соответствующей минимальной и максимальной ширины столбцов. В свою очередь, они используются для нахождения минимальной и максимальной ширины таблицы. Обратите внимание, что ячейки могут содержать вложенные таблицы, но это не усложняет код. Следующим шагом являетс яназначение ширины столбцов в соответствии со свободным пространством (т.е. пространством между левым и правым полями).

Для ячеек, занимающих несколько столбцов, простой подход состоит в распределении минимальной/максимальной ширины равномерно меду всеми столбцами. Чуть более сложный подход - использовать минимальную/максимальную ширину ячеек, не занимающих несколько строк или столбцов, для взвешивания того, как распределяются ширины ячеек, занимающих несколько строк или столбцов. По результатам экспериментов можно сказать, что наилучшие результаты для широкого спектра таблиц дает сочетание этих двух подходов.

Граничы таблицы и поля между ячейками должны включаться в назначенную ширину столбцов. Имеется три случая:

  1. Минимаьлная ширина таблицы равна или превышает доступное пространство. В данном случае назначьте минимальную ширину и дайте пользователям возможность горизонтальной прокрутки. Для преобразования в азбуку Бройля нужно будет заменить ячейки ссылками на полное содержимое. По соглашению это производится перед таблицей.
  2. Максимальная ширина таблицы входит в доступное пространство. В данном случае установите максимальную ширину столбцов.
  3. Максимальная ширина таблицы превышает доступное пространство, но минимальная ширина таблица его не превышает. В данном случае найдите разницу между доступным пространством и минимальной шириной таблицы, назовет ее W. Назовем D разницу между максимальной и минимальной шириной таблицы.

    Для каждого столбца сделайте d равным разнице между максимальной и минимальнйо шириной этого столбца. Затем установите ширину столбца равной минимальной ширине плюс d раз по W свыше D. Это позволит сделать столбцы с большей разницей между минимальной и максимальной шириной шире колонок с мнеьшей разницей.

Затем этот шаг повторяется для вложенных таблиц с использованием минимальной и максимальной ширины, полученных для всех таких таблиц в первом проходе. В данном случае ширина ячейки родительской таблицы играет роль размера текущего кона в приведенном выше описании. Этот процесс повторяется рекурсивно для всех вложенных таблиц. Самая верхняя таблицы затем представляется с исопльзованием назначенных ширин. Вложенные таблицы последовательно представляются как часть содержимого ячейки родительской таблицы.

Если ширина таблицы указана с использованием атрибута width, агент пользователя пытается установить соответсвующую ширину столбцов. Атрибут width не является ограничением, если результаты в столбцах имеют ширину меньше минимальной (т.е. неделимые).

Если относительная ширина определяется с помощью элемента COL, алгоритм изменяется, и ширина столбцов увеличивается по сравнению с минимальной для соответствия ограничениеям относительной ширины. Элементы COL должны учитываться только как подсказки, поэтому ширина столбцов не должна устанавливаться меньше минимальной. Аналогично, ширина столбцов не должна быть такой, чтобы таблица растягивалась за пределы окна. Если элемент COL задает относительную ширину, равную нулю, столбец всегда должен иметь минимальную ширину.

При использовании двухпроходного алгоритма компоновки положение выравнивания по умолчанию в отсутствие явного или унаследованного атрибута charoff может определяться путем выбора позиции, которая была бы центром строки, для которой ширина до и после выравнивающего символа являлись бы максимальными значениями для любой из строк в столбце, для которого align="этот символ". Для последовательной компоновки таблиц по умолчанию используется charoff="50%". Если несколько ячеек в разных строках одного столбца используют выравнивание, такие ячейки должны выстраиваться по умолчанию, независимо от того, какой символ используется для выравнивания. Правила обработки объектов, слишком больших для столбца, применяются, если явное или наследуемое выравнивание приводит к ситуации, когда данные превышают назначенную ширину столбца.

Выбор имен атрибутов. Предпочтительным является выбор значений атрибута frame, соответствующих атрибуту rules и значениям, используемым для выравнивания. Например: none, top, bottom, topbot, left, right, leftright, all. К сожалению, в SGML необходимо, чтобы нумерованные значения атрибутов были уникальными для каждого элемента, независимо от имени атрибута. Это сразу же вызывает проблемы со значениями "none", "left", "right" и "all". Значения атрибута frame выбраны так, чтобы избежать конфликтов имен с атрибутами rules, align и valign-COLGROUP. Это обеспечивает будущую гарантию, поскольку ожидается, что атрибуты frame и rules будут добавлены в другие элементы таблицы в будущих версиях данной спецификации. Альтернативой является способ сделать атрибут frame CDATA. Решением Рабочей группы HTML W3C явилось то, что преимущества возможности использования средств проверки корректности SGML для првоерки атрибутов на базе нумерованных значений превосходит необходимость соответствия имен.

B.6 Замечания о формах

B.6.1 Последовательное отображение

Последовательное отображение документов, полученных по сети, представляет некоторые проблемы с формами. Агенты пользователей должны не позволять передачу форм до получения всех элементов формы.

Последовательно отображение документов приводит к некоторым проблемам относительно перемещения по клавише Tab. Эвристика перехода фокуса на tabindex с самым низким значением в документе на первый взгляд кажетя весьма логичной. Однако это подразумевает необходимость ожидания получения текста всего документа, поскольку до этого tabindex с самым низким значением может измениться. Если пользоваетль нажимает клвишу tab до этого, агентам пользоателя имеет смысл переместить фокус на низший доступный tabindex.

Если формы связаны с клиентскими скриптами, могут возникнуть дополнительные проблемы. Например, обработчик скрипта для данного поля может обращаться к полю, которого еще не существует.

B.6.2 Будущие проекты

В данной спецификации определяется набор элементов и атрибутов, достаточно мощный для представления основных форм. Однако возможности улучшения еще имеются. Например, в будущем можно попытаться решить следующие проблемы:

  • Диапазон типов полей форм слишком ограничен по сравнению с современными пользовательскими интерфейсами. Например, не предусмотрен элемент для ввода таблиц, бегунки или многостраницные варианты.
  • Серверы не могут обновлять поля в отправленных формах и вместо этого должны отправлять полный документ HTML, что вызывает мерцание экрана.
  • Кроме того, возникают проблемы с речевыми браузерами, что затрудняет работу с формами для людей с плохим зрением.

Другим возможным расширением будет добавление атрибута usemap для элемента INPUT для использования в клиентских навигационных картах, если "type=image". Элемент AREA, соответствующий местоположению щелчка, определяет передаваемое на сервер значение. Во избежание необходимости изменения серверных скриптов он может использоваться для расширения элемента AREA и указания значений x и y для использования в элементе INPUT.

B.7 Замечания о скриптах

B.7.1 Зарезервированный синтаксис для будущих макросов скриптов

В данной спецификации резервируется синтаксис для поддержки мкросов скриптов в атрибутах HTML CDATA. Это предназначено для того, чтобы сделать возможной установку атрибутов в зависимости от свойств объектов, находящихся на странице выше. Синтаксис:

   attribute = "... &{ тело макроса }; ... "

Практики макросов скриптов в настоящее время

Тело макроса состоит из одного или нескольких выражений в языке скрипта по умолчанию (как в атрибутах для внутренних событий). Точка с запятой, следующая за правой скобкой, всегда обязательна, в противном случае символ скобки "}" считается частью тела макроса. Не нужно и говорить, что кавычки для атрибутов, содержащих макросы скриптов, обязательны.

Обработка атрибутов CDATA происходит следующим образом:

  1. Синтаксический анализатор SGML оценивает все объекты SGML (например, "&gt;").
  2. Затем ядро скриптов оценивает макросы скриптов.
  3. Наконец, результирующая строка символов передается в приложение для последующей обработки.

Обработка макросов происходит при загрузке документа (или при перезагрузке), но не происходит при изменении размера документа, перерисовке и т.д.

ПРИМЕР НЕЖЕЛАТЕЛЬНОГО ИСПОЛЬЗОВАНИЯ:
Вот несколько примеров использования JavaScript. Первый устанавливает в документе случайный цвет фона:

<BODY bgcolor='&{randomrbg};'>

Вы можете установить более светлый фон в вечернее время:

<BODY bgcolor='&{if(Date.getHours > 18)...};'>

В следующем примере JavaScript используется для устанвоки координат клиентской навигационной карты:

<MAP NAME=foo>
   <AREA shape="rect" coords="&{myrect(imageuri)};" href="&{myuri};" alt="">
 </MAP>

В этом примере устанавливается размер изображения в зависимости от свойств документа:

<IMG src="bar.gif" width='&{document.banner.width/2};' height='50%' alt="баннер">

С помощью скрипта можно устанавливать URI ссылки или изображения:

 <SCRIPT type="text/javascript">
   function manufacturer(widget) {
       ...
   }
   function location(manufacturer) {
       ...
   }
   function logo(manufacturer) {
       ...
   }
 </SCRIPT>
  <A href='&{location(manufacturer("widget"))};'>widget</A>
  <IMG src='&{logo(manufacturer("widget"))};' alt="logo">

В последнем примере показано, как атрибуты SGML CDATA могут заключаться в кавычки с использованием двойных или одинарных кавычек. Если Вы заключаете строку атрибута в одинарные кавычки, в строку атрибута следует включить двойные. Другой подход - использвоание &quot; в качестве двойных кавычек:

<IMG src="&{logo(manufacturer(&quot;widget&quot;))};" alt="logo">

B.8 Замечания о фреймах

Поскольку униальность имени целевого фрейма не гарантирована, оно подходит для описания текущей практики поиска фрейма с данным целевым именем:

  1. Если целевое имя является зарезервированным словом, как описано в нормативном тексте, используйте его соответственно описанию.
  2. В противном случае выполните поиск на первом уровне иерархии фреймов в окне, содержащем ссылку. Используйте первый фрейм с таким именем.
  3. Если такой фрейм на шаге (2) не найден, повторите шаг 2 с каждым окном в порядке от первого до последнего. Прекратите поиск как только встретится фрейм с таким именем.
  4. Если на шаге (3) фрейм не найден, создайте новое окно и назначьте ему это целевое имя.

B.9 Замечания о доступности

Примечание. Следующий алгоритм для генерации альтернативного текста может заменяться по рекомендации Инициативной группы по доступности Web W3C (W3C Web Accessibility Initiative Group). Подробнее см. [WAIGUIDE].

Если автор не установил атрибут alt для элемента IMG или APPLET, агенты пользователя должны сами задавать альтернативный текст, вычисляемый в следующем порядке:

  1. Если указан title, в качестве альтернативного текста должно использоваться значение этого атрибута.
  2. В противном случае, если информация о заголовке дается в заголовках HTTP при загрузке включенного объекта, в качестве альтернативного текста должна использоваться эта информация.
  3. В противном случае, если во включенном объекте имеются текстовые поля (например, изображения GIF имеют тектсовые поля), информация, извлеченная из текстовых полей, должна использоваться в качестве альтернативного текста. Поскольку агентам пользователей для извлечения текстовой инфомрации может понадобиться загрузка всего объекта, они могут использовать более экономичные подходы (например, обсуждение содержимого).
  4. В противном случае, если отсутствует всякая другая информация, агент пользователя должен использовать в качестве альтернативного текста имя файла (без расширения).

Если автор не установил атрибут alt для элемента INPUT, агенты пользователяей должны вычислять альтернативный текст в следующем порядке:

  1. Если указан title, в качестве альтернативного текста должно использоваться его значение.
  2. В противном случае, если указан атрибут name, в качестве альтернативного текста должно использоваться его значение.
  3. В противном случае (кнопки отправки и сброса) в качестве альтернативного текста должно использоваться значение атрибута type.

B.10 Замечания о защите

Якоря, внедренные изображения и все прочие элементы, содержащие URI в качестве параметров, могут привести к разыменовыванию URI в ответ на ввод пользователя. В данном случае следует рассмотреть вопросы, описанные в [RFC1738], раздел 6. Широко используемые методы отправки запросов формы -- HTTP и SMTP - обеспечивают невысокую степень конфиденциальности. Провайдеры информации, запрашивающие через формы важную информацию - особенно с помощью элементов INPUT, type="password" - должны предупреждать своих пользователей о невыосокй степени защиты.

B.10.1 Вопросы защиты для форм

Агент пользователя не должен отправлять файлы, отправку которых пользователь не запросил явно. Таким образом, агенты пользователей HTML должны подтверждать все имена файлов, используемые по умочланию, которые могут быть указаны в атрибуте value элемента INPUT. В скриытых управляющих элементах имена файлов указываться не должны.

В данной спецификации не содержится механизма шифрования данных; оно должно проводиться любыми другими механизмами защищенной передачи данных.

После загрузки файла обрабатывающий агент должен соответствующим образом обработать и сохранить файл.


Объекты, изображения и апплеты в документах в формате HTML

13 Объекты, изображения и апплеты

  1. Введение в объекты, изображения и апплеты
  2. Включение изображения: элемент IMG
  3. Общее включение: элемент OBJECT
    1. Правила представления объектов
    2. Инициализация объекта: элемент PARAM
    3. Глобальные схемы именования объектов
    4. Объявление и инициализация объекта
  4. Включение апплета: элемент APPLET
  5. Замечания о внедренных документах
  6. Навигационные карты
    1. Клиентские навигационные карты: элементы MAP и AREA
      • Примеры клиентских навигационных карт
    2. Серверные навигационные карты
  7. Визуальное представление изображений, объектов и апплетов
    1. Ширина и высота
    2. Пространство вокруг изображений и объектов
    3. Границы
    4. Выравнивание
  8. Как указать альтернативный текст

13.1 Введение в объекты, изображения и апплеты

Функции мультимедиа языка HTML позволяют авторам включать в свои страницы изображения, апплеты (программы, которые автоматически загружаются и выполняются на машине пользователя), видеоклипы и другие документы в формате HTML.

Например, чтобы включить в документ изображение в формате PNG, авторы могут использовать следующий код:

<BODY>
<P>Около Большого Каньона:
<OBJECT data="canyon.png" type="image/png">
<EM>Около</EM> Большого Каньона.
</OBJECT>
</BODY>

В предыдущих версиях HTML авторы могли включать изображения (с помощью IMG) и апплеты (с помощью APPLET). Эти элементы имеют несколько ограничений:

  • Они не могут решить более общей проблемы - включение новых и возможных в будущем типов устройств.
  • Элемент APPLET работает только с апплетами языка Java. Этот элемент теперь нежелателен, вместо него используется элемент OBJECT.
  • Они вызывают проблемы доступности.

Для решения всех этих вопросов в HTML 4.0 вводится элемент OBJECT, обеспечивающий всестороннее решение для включения объектов. Элемент OBJECT позволяет авторам документов в формате HTML указывать всю информацию, необходимую для представления объекта агентом пользователя: исходный код, начальные значения и рабочие данные. В данной спецификации термин "объект" используется для описания всех объектов, которые Вы захотите включить в HTML-документы; другие термины: апплеты, подключаемые модули (plug-ins), дескрипторы устройств и т.д.

Новый элемент OBJECT, таким образом, subsumes некоторые задачи, выполняемые существующими элементами. Рассмотрим следующую классификацию функций:

Тип включения | Конкретный элемент | Общий элемент
Изображение | IMG | OBJECT
Апплет | APPLET (Нежелателен.) | OBJECT
Другой документ HTML | IFRAME | OBJECT

Из таблицы видно, что каждый тип включения имеет конкретное и общее решение. Общий элемент OBJECT служит решением для использования возможных в будущем типов устройств.

Для включения изображений авторы могут использовать элемент OBJECT или элемент IMG.

Для включения апплетов авторам следует использовать элемент OBJECT, поскольку использование элемента APPLET нежелательно.

Для включения одного документа HTML в другой авторы могут использовать новый элемент IFRAME или элемент OBJECT. В обоих случаях внедренный документ не зависит от основного документа. Визуальные агенты пользователей могут представлять внедренный документ в виде отдельного окна в основном документе. Для сравнения элементов OBJECT и IFRAME обратитесь к замечаниям о внедряемых документов.

С изображениями и другими включаемыми объектами могут быть связаны ссылки, с помощью стандартных механизмов ссылок, а также и с помощью навигационных карт (image maps). На навигационной карте задаются геометрические области включаемого объекта, и каждой из них назначается ссылка. При активизации эти ссылки могут вызывать загрузку документа, запускать программу на сервере и т.д.

В следующих разделах мы обсудим различные механизмы, которые авторы могут использовать для включения мультимедиа и создания навигационных карт для этих объектов.

13.2 Включение изображения: элемент IMG

<!-Во избежание проблем с текстовыми агентами пользователей,
   а также для того, чтобы включение изображений было понятно
   пользователям невизуальных агентов и могло использоваться ими,
   Вы должны указывать описания в элементе ALT и избегать использования
   Серверных навигационных карт-->
<!ELEMENT IMG - O EMPTY                -- Внедренное изображение -->
<!ATTLIST IMG
  %attrs;                              -- %coreattrs, %i18n, %events --
  src         %URI;          #REQUIRED -- URI внедряемого изображения --
  alt         %Text;         #REQUIRED -- краткое описание --
  longdesc    %URI;          #IMPLIED  -- ссылка на длинное описание
                                          (дополняет alt) --
  height      %Length;       #IMPLIED  -- переопределение высоты --
  width       %Length;       #IMPLIED  -- переопределение ширины --
  usemap      %URI;          #IMPLIED  -- использовать клиентскую
                                          навигационную карту --
  ismap       (ismap)        #IMPLIED  -- использовать серверную
                                          навигационную карту --
  >

Начальный тег: обязателен, Конечный тег: запрещен

Определения атрибутов

src = uri [CT]
Этот атрибут задает местоположение изображения. Примерами широко распознаваемых форматов являются GIF, JPEG и PNG.
longdesc = uri [CT]
Этот атрибут определяет ссылку на длинное описание изображения. Это описание должно дополнять краткое описание, задаваемое атрибутом alt. Если с изображением связана навигационная карта, в этом атрибуте должна приводиться информация о ее содержимом. Это особенно важно для серверных навигационных карт.

Атрибуты, определенные в другом месте

  • id, class (идентификаторы в пределах документа)
  • alt (альтернативный текст)
  • lang (информация о языке), dir (направление текста)
  • title (заголовок элемента)
  • style (встроенная информация о стиле)
  • onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события)
  • ismap, usemap (клиентская навигационная карта)
  • align, width, height, border, hspace, vspace (визуальное представление объектов, изображений и апплетов)

Элемент IMG внедряет изображение в текущий документ по адресу из определения элемента. Элемент IMG не имеет содержимого; обычно он замещается изображением, назначаемым атрибутом src, исключение при этом составляют выровненные влево или вправо изображения, которые "floated" out of line.

В приведенном ранее примере мы определили ссылку на семейную фотографию. Здесь мы вставим фотографию непосредственно в текущий документ:

<BODY>
<P>Я только что вернулся из отпуска! Вот фотография моей семьи на озере:
<IMG src="http://www.somecompany.com/People/Ian/vacation/family.png"
     alt="Фотография моей семьи на озере.">
</BODY>

Этого же эффекта можно достичь с помощью элемента OBJECT следующим образом:

<BODY>
<P>Я только что вернулся из отпуска! Вот фотография моей семьи на озере:
<OBJECT data="http://www.somecompany.com/People/Ian/vacation/family.png"
        type="image/png">
Фотография моей семьи на озере.
</OBJECT>
</BODY>

Атрибут alt задает альтернативный текст, который генерируется, если изображение невозможно отобразить (информацию о том, как указать альтернативный текст, см. ниже ). Агенты пользователей должны генерировать альтернативный текст, если они не поддерживают изображение, если они не поддерживают определенный тип изображений или если они сконфигурированы так, чтобы не выводить изображений.

В следующем примере показано, как можно использовать атрибут longdesc для ссылки на более подробное описание:

<BODY>
<P>
<IMG src="sitemap.gif"
     alt="Карта узла лабораторий HP"
     longdesc="sitemap.html">
</BODY>

Атрибут alt задает краткое описание изображения. Его должно быть достаточно для того, чтобы пользователи могли решить, хотят ли они следовать по ссылке, определяемой атрибутом longdesc для более получения подробного описания, здесь это ссылка "sitemap.html".

Информацию о размере изображения, выравнивании и границах см. в разделе о визуальном представлении объектов, изображений и апплетов.

13.3 Общее включение: элемент OBJECT

<!ELEMENT OBJECT - - (PARAM | %flow;)*
 -- общий внедренный объект -->
<!ATTLIST OBJECT
  %attrs;                              -- %coreattrs, %i18n, %events --
  declare     (declare)      #IMPLIED  -- объявить, но не instantiate флаг --
  classid     %URI;          #IMPLIED  -- определяет применение --
  codebase    %URI;          #IMPLIED  -- базовый URI для classid, data, archive--
  data        %URI;          #IMPLIED  -- ссылка на данные объекта --
  type        %ContentType;  #IMPLIED  -- тип содержимого для данных --
  codetype    %ContentType;  #IMPLIED  -- тип содержимого для кода --
  archive     %URI;          #IMPLIED  -- разделенный пробелами список архивов --
  standby     %Text;         #IMPLIED  -- сообщение, отображаемое при загрузке --
  height      %Length;       #IMPLIED  -- переопределение высоты --
  width       %Length;       #IMPLIED  -- переопределение ширины --
  usemap      %URI;          #IMPLIED  -- использовать клиентскую навигационную карту --
  name        CDATA          #IMPLIED  -- представить в качестве части формы --
  tabindex    NUMBER         #IMPLIED  -- положение в последовательности перехода --
  >

Начальный тег: обязателен, Конечный тег: обязателен

Определения атрибутов

classid = uri [CT]
Этот атрибут может использоваться для указания местоположения объекта с помощью URI. Он может использоваться вместе с атрибутом data или как альтернатива ему, в зависимости от типа объекта.
codebase = uri [CT]
Этот атрибут определяет базовый путь, используемый для разрешения относительных адресов URI, задаваемых в атрибутах classid, data и archive. Если этот атрибут отсутствует, значением по умолчанию является базовый адрес URI текущего документа.
codetype = content-type [CI]
Этот атрибут определяет тип содержимого данных, получения которых следует ожидать при загрузке объекта, задаваемого атрибутом classid. Этот атрибут не является обязательным, но рекомендуется, если используется атрибут classid, поскольку он позволяет агенту пользователя избежать загрузки информации для типа содержимого, который он не поддерживает. Если этот атрибут отсутствует, по умолчанию используется значение атрибута type.
data = uri [CT]
Этот атрибут может использоваться для указания местоположения данных объекта, например, данных изображения для объектов, определяющих изображения, или в более общем случае - serialized формы объекта, который может использоваться для повторного его создания. Если дается относительный адрес URI, он должен интерпретироваться относительно атрибута codebase.
type = content-type [CI]
Этот атрибут определяет тип содержимого для данных, задаваемых атрибутом data. Этот атрибут не является обязательным, но рекомендуется, если используется атрибут data, поскольку он позволяет агенту пользователя избежать загрузки информации для типа содержимого, который они не поддерживают.
archive = uri list [CT]
Этот атрибут может использоваться для определения разделенного пробелами списка адресов URI архивов, содержащих относящиеся к объекту ресурсы, который может включать ресурсы, задаваемые атрибутами classid и data. Предварительная загрузка архивов приведет к уменьшению времени загрузки объекта. Архивы, указанные в виде относительных адресов URI, должны интерпретироваться относительно атрибута codebase.
declare [CI]
Если этот логический атрибут указан, он делает текущее определение OBJECT только объявлением. Объект должен быть instantiated последующим определением OBJECT, ссылающимся на это объявление.
standby = text [CS]
Этот атрибут определяет сообщение, которое агент пользователя может генерировать при загрузке implementation и данных объекта.

Атрибуты, определенные в другом месте

  • id, class (идентификаторы в пределах документа)
  • lang (информация о языке), dir (направление текста)
  • title (заголовок элемента)
  • style (встроенная информация о стиле)
  • onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события)
  • tabindex (переход по клавише tab)
  • usemap (клиентские навигационные карты)
  • name (предоставление формы)
  • align, width, height, border, hspace, vspace (визуальное представление объектов, изображений и апплетов)

В большинстве агентов пользователей имеются встроенные механизмы для генерации основных типов данных, таких как текст, изображения в формате GIF, цвета, шрифты и ряд графических элементов. Для генерации типов данных типов данных, которые агенты пользователей не поддерживают по умолчанию, они обычно запускают внешние приложения. Элемент OBJECT позволяет авторам ууправлять генерацией данных - задавать внешнюю генерацию или использование некоторой определяемой автором программы, генерирующей данные в агенте пользователя.

В более общем случае автор должен будет определить три типа информации:

  • Реализация включенного объекта. Например, если включенный объект - апплет, автор должен указать местоположение исполняемого кода апплета.
  • Генерируемые данные. Например, если включенный объект является программой, генерирующей данные шрифта, автор должен указать местоположение этих данных.
  • Дополнительные значения, необходимые объекту. Например, некоторым апплетам могут быть нужны исходные значения для их параметров.

Элемент OBJECT позволяет авторам указать все три типа данных объекта, но авторы не обязательно должны указывать их все. Например, некоторым объектам не требуются данные (например, апплет, выполняющий анимацию). Другим может быть не нужна инициализация. Другим же может не понадобиться дополнительная информация о реализации, то есть сам агент пользователя может уже знать, как генерировать этот тип данных (например, изображения в формате GIF).

Авторы задают реализацию объекта и местоположение данных, генерируемых с помощью элемента OBJECT. Однако для указания рабочих значений авторы используют элемент PARAM, обсуждаемый в разделе об инициализации объекта.

Элемент OBJECT может также присутствовать внутри элемента HEAD. Поскольку агенты пользователей обычно не генерируют элементы в HEAD, авторам следует убедиться, что во всех элементах OBJECT в HEAD нет содержимого, которое можно генерировать. Пример включения элемента OBJECT в элемент HEAD см. в разделе о совместном использовании данных кадра.

Информацию об элементе OBJECT в формах см. в разделе об управлении формами.

13.3.1 Правила генерации объектов

Агент пользователя должен интерпретировать элемент OBJECT в соответствии со следующими правилами старшинства:

  1. Сначала агент пользователя должен попытаться сгенерировать объект. Он не должен генерировать содержимое элемента, но должен проверить его на случай, если элемент содержит дополнительные дочерние элементы PARAM (см. инициализация объекта) или элементы MAP (см. клиентские навигационные карты).
  2. Если агент пользователя по какой-либо причине не может сгенерировать объект (не сконфигурирован для этого, недостаточно ресурсов, ошибочная архитектура и т.д.), он должен попытаться сгенерировать его содержимое.

Авторам не следует включать содержимое в элементы OBJECT, расположенные в элементе HEAD.

В следующем примере мы вставляем в документ апплет, представляющий часы, с помощью элемента OBJECT. Апплету, написанный на языке Python, не нужны дополнительные и рабочие значения. Атрибут classid определяет местоположение апплета:

<P><OBJECT classid="http://www.miamachina.it/analogclock.py">
</OBJECT>

Обратите внимание на то, что часы будут генерироваться, как только агент пользователя интерпретирует это объявление OBJECT. Можно отложить генерацию объекта, начав с объявления объекта (описывается ниже).

Авторы должны выполнять объявление, включая альтернативный текст в качестве содержимого элемента OBJECT в случае, если агент пользователя не может сгенерировать часы.

<P><OBJECT classid="http://www.miamachina.it/analogclock.py">
Часы с анимацией.
</OBJECT>

Одним важным последствием создания элемента OBJECT является то, что он предлагает механизм задания альтернативной генерации объектов; в каждом внедренном объявлении OBJECT могут задаваться альтернативные типы содержимого. Если агент пользователя не может сгенерировать outermost OBJECT, он пытается сгенерировать содержимое, которое может юыть другим элементом OBJECT и т.д.

В следующем примере мы внедряем несколько объявлений OBJECT для того, чтобы показать работу альтернативной генерации. Агент пользователя попытается сгенерировать первый элемент OBJECT, который он может, в следующем порядке: (1) апплет Earth, написанный на языке Python, (2) клип Земли в формате MPEG, (3) изображение Земли в формате GIF, (4) альтернативный текст.

<P>                 <!- Сначала попробовать апплет на языке Python -->
<OBJECT title="Вид Земли из космоса"
        classid="http://www.observer.mars/TheEarth.py">
                    <!- Затем попробовать воспроизвести видеоклип
                           в формате MPEG -->
  <OBJECT data="TheEarth.mpeg" type="application/mpeg">
                    <!- Затем попробовать изображение в формате GIF -->
    <OBJECT data="TheEarth.gif" type="image/gif">
                    <!- Затем сгенерировать текст -->
     Вид <STRONG>Земли</STRONG> из космоса.
    </OBJECT>
  </OBJECT>
</OBJECT>

Внешнее объявление определяет апплет, которому не нужны данные или начальные значения. Второе объявление определяет клип в формате MPEG и, поскольку местоположение обработчика формата MPEG не указано, предполагается, что клип будет обрабатываться агентом пользователя. Мы также установили атрибут type, так что агент пользователя, который знает, что он не может сгенерировать клип в формате MPEG, не будет загружать файл "TheEarth.mpeg" из сети. В третьем объявлении задается местоположение файла в формате GIF и определяется альтернативный текст на случай, если все прочие механизмы не сработают.

Встроенные и внешние данные. Данные, которые должны генерироваться, могут указываться двумя способами: в виде встроенного или внешнего ресурса. Последний метод обычно обеспечивает более быструю генерацию, но неудобен при генерации большого объема данных.

Ниже приводится пример, показывающий, как встроенные данные могут be fed to an OBJECT:

<P>
<OBJECT id="clock1"
        classid="clsid:663C8FEF-1EF9-11CF-A3DB-080036F12502"
        data="data:application/x-oleobject;base64, ...данные base64...">
    Часы.
</OBJECT>

Информацию о размере, выравнивании и границах объекта см. в разделе визуальное представление объектов, изображений и апплетов.

13.3.2 Инициализация объекта: элемент PARAM

<!ELEMENT PARAM - O EMPTY              -- значение именованного свойства -->
<!ATTLIST PARAM
  id          ID             #IMPLIED  -- идентификатор в пределах
                                          документа --
  name        CDATA          #REQUIRED -- имя свойства --
  value       CDATA          #IMPLIED  -- значение свойства --
  valuetype   (DATA|REF|OBJECT) DATA   -- Как интерпретировать значение --
  type        %ContentType;  #IMPLIED  -- тип содержимого для значения,
                                          если valuetype=ref --
  >

Начальный тег: обязателен, Конечный тег: запрещен

Определения атрибутов

name = cdata
Этот атрибут определяет имя рабочего параметра, которое должно быть понятно вставляемому объекту. Учитывает ли имя свойства регистр, зависит от конкретной реализации объекта.
value = cdata
Этот атрибут определяет значение рабочего параметра, задаваемого атрибутом name. Значения свойств не имеют значения в HTML; их значение определяется объектом.
valuetype = data|ref|object [CI]
Этот атрибут определяет тип атрибута value. Возможные значения:
  • data: Это значение используется по умолчанию. Оно означает, что значение, задаваемое атрибутом value, будет определяться и передаваться в объект в виде строки.
  • ref: Значение, задаваемое атрибутом value, является адресом URI ресурса, где хранятся рабочие значения. Это позволяет средствам поддержки идентифицировать адреса URI, данные в качестве параметров. Адрес URI должен передаваться в объект как есть, то есть неразрешенным.
  • object: Значение, задаваемое атрибутом value, является идентификатором, ссылающимся на объявление OBJECT в этом же документе. Идентификатором должно быть значение атрибута id для объявленного элемента OBJECT.
type = content-type [CI]
Этот атрибут задает тип содержимого ресурса, назначаемого атрибутом value только в случае, если значением атрибута valuetype является "ref". Таким образом, этот атрибут определяет для агента пользователя тип значений, которые будут находиться по адресу URI, назначенному атрибутом value.

Атрибуты, определенные в другом месте

  • id (идентификаторы в пределах документа)

Элементы PARAM определяют набор значений, которые могут понадобиться объекту во время работы. В элементах OBJECT или APPLET может присутствовать любое число атрибутов PARAM в любом порядке, но они должны помещаться в начале тела включающего элемента OBJECT или APPLET.

Синтаксис имен и значений считается понятным обработчику объекта. Данный документ не указывает, как агенты пользователей должны загружать пары имя/значение, а также того, как они должны интерпретировать повторяющиеся имена параметров.

Вернемся к примеру с часами и покажем использование элемента PARAM: предположим, что апплет может принимать два рабочих параметра, определяющих его начальную высоту и ширину. Мы можем установить исходные размеры 40x40 пикселов с помощью двух элементов PARAM.

<P><OBJECT classid="http://www.miamachina.it/analogclock.py">
<PARAM name="height" value="40" valuetype="data">
<PARAM name="width" value="40" valuetype="data">
Этот агент пользователя не может сгенерировать приложение на языке Python.
</OBJECT>

В следующем примере рабочие данные для параметра "Init_values" объекта задаются в виде внешнего ресурса (файл GIF). Таким образом для атрибута valuetype устанавливается значение "ref", а атрибутом value является адрес URI ресурса.

<P><OBJECT classid="http://www.gifstuff.com/gifappli"
       standby="Загрузка Элвиса...">
<PARAM name="Init_values"
       value="./images/elvis.gif">
       valuetype="ref">
</OBJECT>

Обратите внимание, что мы также установили атрибут standby, так что агент пользователя может отобразить сообщение во время загрузки генерирующего механизма.

Когда элемент OBJECT сгенерирован, агенты пользователя должны выполнить поиск содержимого только для тех элементов PARAM, которые являются их прямыми дочерними элементами и "feed" их to the OBJECT.

Таким образом, в следующем примере, если сгенерирован "obj1", "param1" применяется к "obj1" (и не применяется к "obj2"). Если "obj1" не сгенерирован, а "obj2" сгенерирован, "param1" игнорируется, а "param2" применяется к "obj2". Если ни один OBJECT не сгенерирован, ни один PARAM не применяется.

<P>
<OBJECT id="obj1">
   <PARAM name="param1">
   <OBJECT id="obj2">
      <PARAM name="param2">
   </OBJECT>
</OBJECT>

13.3.3 Глобальные схемы именования объектов

Местоположение обработчика объекта задается адресом URI. Как было сказано во введении в URI, первый сегмент абсолютного адреса URI задает схему именования, используемую для передачи данных, назначаемых адресом URI. Для документов в формате HTML этой схемой часто является "http". Некоторые апплеты могут использовать внешние схемы именования. Например, при указании апплета Java авторы могут использовать адреса URI, начинающиеся с "java", я для аппелтов ActiveX авторы могут использовать "clsid".

В следующем примере мы вставляем апплет на языке Java в документ в формате HTML.

<P><OBJECT classid="java:program.start">
</OBJECT>

Установив атрибут codetype, агент пользователя может определить, нужно ли загружать ли приложение Java, в зависимости от своих возможностей.

<OBJECT codetype="application/java-archive"
        classid="java:program.start">
</OBJECT>

Некоторым схемам генерации для определения обработки необходима дополнительная информация, поэтому им необходимо указать, где находится эта информация. Авторы могут указать путь к обработчику объекта с помощью атрибута codebase.

<OBJECT codetype="application/java-archive"
        classid="java:program.start">
        codebase="http://foooo.bar.com/java/myimplementation/"
</OBJECT>

В следующем примере (с помощью атрибута classid) задается объект ActiveX в виде адреса URI, начинающегося со схемы именования "clsid". Атрибут data определяет местоположение генерируемых данных (еще одни часы).

<P><OBJECT classid="clsid:663C8FEF-1EF9-11CF-A3DB-080036F12502"
        data="http://www.acme.com/ole/clock.stm">
Это приложение не поддерживается.
</OBJECT>

13.3.4 Объявление и инициализация объекта

В приведенных выше примерах были показаны отдельные определения объектов. Если в документе должно содержаться несколько экземпляров одного и того же объекта, объявление и инициализацию объекта можно разделить. Такой способ имеет несколько преимуществ:
  • Данные могут загружаться агентом пользователя из сети один раз (во время объявления) и повторно использоваться в каждой инициализации.
  • Инициализировать объект можно из местоположения, отличного от того, в котором объект объявлялся, например, из ссылки.
  • Объекты можно определять в качестве рабочих данных для других объектов.

Чтобы объявить объект так, чтобы он не обрабатывался агентом пользователя при чтении, установите логический атрибут declare элемента OBJECT. В то же время авторы должны идентифицировать объявление, установив уникальное значение для атрибута id в элементе OBJECT. Инициализация объекта позже будет ссылаться на этот идентификатор.

Объявленный OBJECT должен присутствовать в документе до первого экземпляра OBJECT.

Объект, определенный с атрибутом declare, инициализируется каждый раз, когда необходима генерация элемента, ссылающегося на этот объект (например, активизируется ссылка на него, активизируется объект, ссылающийся на него и т.д.).

В следующем примере мы объявляем OBJECT и вызываем его инициализацию, указав его в ссылке. Таким образом объект можно активизировать, щелкнув, например, на выделенном тексте.

<P><OBJECT declare
        id="earth.declaration"
        data="TheEarth.mpeg"
        type="application/mpeg">
   Вид <STRONG>Земли</STRONG> из космоса.
</OBJECT>
...далее в документе...
<P>Красивое<A href="#earth.declaration"> анимационное изображение Земли!</A>

В следующем примере показано, как указать рабочие значения, являющиеся другими объектами. В этом примере мы отправляем текст (стихотворение) гипотетическому механизму для просмотра стихотворений. Объект распознает рабочий параметр с именем "font" (скажем, для генерации текста стихотворения с использованием определенного шрифта). Значение этого параметра само является объектом, вставляющим (но не генерирующим) объект шрифта. Отношение между объектом шрифта и объектом механизма просмотра стихотворений достигается с помощью (1) назначения атрибута id в объявлении объекта шрифта и (2) ссылки на него в элементе PARAM объекта механизма просмотра стихотворений (с помощью valuetype и value).

<P><OBJECT declare
     id="tribune"
     type="application/x-webfont"
     data="tribune.gif">
</OBJECT>
...просмотр стихотворения из файла KublaKhan.txt...
<P><OBJECT classid="http://foo.bar.com/poem_viewer"
           data="KublaKhan.txt">
<PARAM name="font" valuetype="object" value="#tribune">
<P>У вас нет такой классной программы просмотра стихотворений...
</OBJECT>

Агенты пользователей, не поддерживающие атрибут declare, должны генерировать содержимое объявления OBJECT.

13.4 Включение апплета: элемент APPLET

Элемент APPLET является нежелательным (как и все атрибуты этого элемента), вместо него следует использовать элемент OBJECT.

Формальное определение см. в Transitional DTD.

Определения атрибутов

codebase = uri [CT]
Этот атрибут определяет базовый адрес URI апплета. Если этот атрибут не указан, по умолчанию используется базовый адрес URI, используемый для всего документа. Значениями этого атрибута могут быть только подкаталоги каталога, в котором расположен текущий документ.
code = cdata [CS]
Этот атрибут определяет имя файла класса, содержащего скомпилированный подкласс апплета или путь, по которому можно получить класс, включая сам файл класса. Он интерпретируется с учетом кода апплета. Для этого должен быть указан один из атрибутов code или object.
name = cdata [CS]
Этот атрибут определяет имя экземпляра апплета, что дает возможность апплетам на одной странице находить друг друга и взаимодействовать друг с другом.
archive = uri-list [CT]
Этот атрибут определяет разделенный запятыми список адресов URI архивов, содержащих классы и другие ресурсы, которые будут "предварительно загружаться". Классы загружаются с помощью экземпляра AppletClassLoader с заданным codebase. Относительные адреса URI архивов интерпретируются относительно codebase апплета. Предварительная загрузка ресурсов может существенно увеличить производительность апплетов.
object = cdata [CS]
Этот атрибут определяет имя ресурса, содержащего serialized представление состояния апплета. Он интерпретируется относительно codebase апплета. serialized данные содержат имя класса апплета, но не обработчика. Имя класса используется для загрузки обработчика из файла класса или архива.

Если апплет "deserialized", метод start() вызывается вместо метода init(). Атрибуты, допустимые при serialized исходного объекта, не восстанавливаются. Атрибуты, переданные в этот экземпляр APPLET, будут доступны апплету. Авторам следует очень осторожно использовать это свойство. Перед serialized вапплет должен быть остановлен.

Должен присутствовать один из атрибутов code или object. Если даны оба атрибута code и object, и в них указаны разные имена классов, это является ошибкой.

width = длина [CI]
Этот атрибут определяет начальную ширину области отображения апплета (не включая окна и диалоги, создаваемые апплетом).
height = длина [CI]
Этот атрибут определяет начальную высоту области отображения апплета (не включая окна и диалоги, создаваемые апплетом).

Атрибуты, определенные в другом месте

  • id, class (идентификаторы в пределах документа)
  • title (заголовок элемента)
  • style (встроенная информация о стиле)
  • alt (альтернативный текст)
  • align, hspace, vspace (визуальное представление объектов, изображений и апплетов)

Этот элемент, поддерживаемый всеми программами просмотра с поддержкой Java, позволяет дизайнерам внедрять апплеты Java в документы HTML. Он является нежелательным, и вместо него следует использовать элемент OBJECT.

Содержимое элемента APPLET служит альтернативной информацией для агентов пользователей, не поддерживающих этот элемент или не сконфигурированных для поддержки апплетов. В противном случае агенты пользователей должны игнорировать содержимое.

ПРИМЕР НЕЖЕЛАТЕЛЬНОГО ИСПОЛЬЗОВАНИЯ:
В следующем примере элемент APPLET включает в документ апплет на языке Java. Поскольку атрибут codebase не установлен, предполагается, что апплет находится в том же каталоге, что и сам документ.

<APPLET code="Bubbles.class" width="500" height="500">
Java-апплет, рисующий движущиеся пузыри.
</APPLET>

Этот пример можно переписать с использованием элемента OBJECT следующим образом:

<P><OBJECT codetype="application/java"
        classid="java:Bubbles.class"
        width="500" height="500">
Java-апплет, рисующий движущиеся пузыри.
</OBJECT>

Задать для апплета исходные значения можно с помощью элемента PARAM.

ПРИМЕР НЕЖЕЛАТЕЛЬНОГО ИСПОЛЬЗОВАНИЯ:
Следующий апплет на языке Java:

<APPLET code="AudioItem" width="15" height="15">
<PARAM name="snd" value="Hello.au|Welcome.au">
Java-апплет, воспроизводящий звуковой файл приветствия.
</APPLET>

можно определить с использованием элемента OBJECT следующим образом:

<OBJECT codetype="application/java"
        classid="AudioItem"
        width="15" height="15">
<PARAM name="snd" value="Hello.au|Welcome.au">
Java-апплет, воспроизводящий звуковой файл приветствия.
</OBJECT>

13.5 Замечания о внедренных документах

Иногда вместо ссылки на документ автору нужно внедрить его непосредственно в первичный документ HTML. Авторы могут использовать для этого элемент IFRAME или OBJECT, но эти элементы несколько различны. Эти два элемента не только имеют различные модели содержимого, но также элемент IFRAME может быть целевым кадром (подробнее см. раздел об указании информации о целевом кадре) и может быть "выделен" агентом пользователя для печати, просмотра кода HTML и т.д. Агенты пользователя могут генерировать выделенные кадры способом, отличным от генерации невыделенных кадров (например, отображать границу вокруг выделенного кадра).

Внедренный документ полностью независим от документа, в который он внедрен. Например, относительные адреса URI во внедренном документе разрешаются в соответствии с базовым адресом URI, указанным во внедренном документе, а не в основном документе. Внедренный документ только генерируется в другом документе (например, во вложенном окне); it во всех остальных отношениях он остается независимым.

Например, следующая строка внедряет содержимое файла embed_me.html в то место документа, в котором встречено определение OBJECT.

...предшествующий текст...
<OBJECT data="embed_me.html">
Внимание: невозможно внедрить файл embed_me.html.
</OBJECT>
...последующий текст...

Вспомните, что содержимое элемента OBJECT должно генерироваться, только если файл, задаваемый атрибутом data, невозможно загрузить.

Поведение агента пользователя в случаях, когда файл включает сам себя, не определено.

13.6 Навигационные карты

Навигационные карты позволяют авторам определять области изображения или объекта и назначать каждой области определенное действие (например, загрузку документа, запуск программы и т.д.) Когда область активизируется пользователем, выполняется действие.

Навигационная карта создается путем назначения объекта с указанием соответствующих геометрических областей.

Имеется два типа навигационных карт:

  • Клиентская. Когда пользователь активизирует область клиентской навигационной карты с помощью мыши, координаты точки интерпретируются агентом пользователя. Агент пользователя выбирает ссылку, указанную для активизированной области, и выполняет ее.
  • Серверная. Когда пользователь активизирует область серверной навигационной карты с помощью мыши, координаты точки щелчка передаются агенту на сервере, определенному с помощью атрибута href элемента A. Агент на сервере интерпретирует координаты и выполняет соответствующие действия.

Клиентские навигационные карты являются предпочтительными по отношению к серверным по крайней мере по двум причинам: они доступны пользователям неграфических агентов и позволяют незамедлительно определить, находится ли указатель в активной области.

13.6.1 Клиентские навигационные карты: элементы MAP и AREA

<!ELEMENT MAP - - ((%block;)+ | AREA+) - клиентская навигационная карта -->
<!ATTLIST MAP
  %attrs;                              -- %coreattrs, %i18n, %events --
  name        CDATA          #REQUIRED - для ссылки usemap --
  >

Начальный тег: обязателен, Конечный тег: обязателен

<!ELEMENT AREA - O EMPTY               -- область клиентской навигационной
                                          карты -->
<!ATTLIST AREA
  %attrs;                              -- %coreattrs, %i18n, %events --
  shape       %Shape;        rect      -- управляет интерпретацией координат --
  coords      %Coords;       #IMPLIED  -- разделенный запятыми список длин --
  href        %URI;          #IMPLIED  -- адрес URI связанного ресурса --
  nohref      (nohref)       #IMPLIED  -- для этого региона действие
                                          не назначено --
  alt         %Text;         #REQUIRED -- краткое описание --
  tabindex    NUMBER         #IMPLIED  -- положение в последовательности
                                          перехода --
  accesskey   %Character;    #IMPLIED  -- символ доступа --
  onfocus     %Script;       #IMPLIED  -- элемент получил фокус --
  onblur      %Script;       #IMPLIED  -- элемент потерял фокус --
  >

Начальный тег: обязателен, Конечный тег: запрещен

Определения атрибутов элемента MAP

name = cdata [CI]
Этот атрибут назначает имя навигационной карты, определяемой элементом MAP.

Определения атрибутов элемента AREA

shape = default|rect|circle|poly [CI]
Этот атрибут определяет форму области. Возможные значения:
  • default: Задает всю область.
  • rect: Определяет прямоугольную область.
  • circle: Определяет круглую область.
  • poly: Определяет многоугольную область.
coords = координаты [CN]
Этот атрибут определяет положение формы на экране. Число и порядок значений зависят от определенной формы. Возможные комбинации:
  • rect: x левой границы, y верхней границы, x правой границы, y нижней границы.
  • circle: x центра, y центра, радиус. Примечание. Если радиус указан в процентах, агенты пользователя должны вычислять окончательное значение радиуса в зависимости от назначенных объекту ширины и высоты. Радиус должен быть наименьшим из этих двух значений.
  • poly: x1, y1, x2, y2, ..., xN, yN.

Координаты задаются относительно верхнего левого угла объекта. Все значения являются длинами. Все значения отделяются друг от друга запятыми.

nohref [CI]
Если этот логический атрибут установлен, он указывает, что с этой областью ссылка не связана.

Атрибут для установления связи навигационной карты с элементом

usemap = uri [CT]
Этот атрибут связывает навигационную карту с элементом. Навигационная карта определяется с помощью элемента MAP. Значение атрибута usemap должно совпадать со значением атрибута name связанного элемента MAP.

Атрибуты, определенные в другом месте

  • id, class (идентификаторы в пределах документа)
  • lang (информация о языке), dir (направление текста)
  • title (заголовок элемента)
  • style (встроенная информация о стиле)
  • name (предоставление агентов с помощью форм)
  • alt (альтернативный текст)
  • href (ссылка anchor) target (информация о целевом кадре)
  • tabindex (переход по клавише Tab)
  • accesskey (клавиши доступа)
  • shape (навигационные карты)
  • onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup, onfocus, onblur (внутренние события)

Элемент MAP определяет клиентскую навигационную карту, которая может быть связана с одним или несколькими элементами (IMG, OBJECT или INPUT). Навигационная карта связывается с элементом с помощью атрибута usemap этого элемента.

Наличие атрибута usemap в элементе OBJECT подразумевает, что объект включается в виде изображения. Более того, если с элементом OBJECT связана клиентская навигационная карта, агенты пользователей могут интерпретировать взаимодействие пользователя с элементом OBJECT исключительно в терминах клиентской навигационной карты. Это позволяет агентам пользователей (например, звуковым браузерам или роботам) взаимодействовать с элементом OBJECT, не обрабатывая его; агент пользователя может даже не загружать (или не обрабатывать) объект. Если с элементом OBJECT связана навигационная карта, авторы не могут быть уверены, что этот объект будет загружаться и обрабатываться всеми агентами пользователей.

Каждый элемент MAP может содержать следующее:

  1. Один или несколько элементов AREA. Эти элементы не имеют содержимого, но определяют геометрические области навигационной карты и ссылки, связанные с каждой областью. Обратите внимание, что при использовании этого метода элемент MAP не имеет генерируемого содержимого. Таким образом, авторы должны изменять текст для каждого элемента AREA с помощью атрибута alt (см. далее информацию о том, как указать альтернативный текст).
  2. Содержимое уровня блока. Сюда должны включаться элементы A, определяющие геометрические области навигационной карты, и ссылки, связанные с каждой областью. Обратите внимание, что при использовании этого метода содержимое элемента MAP может генерироваться агентом пользователя. Для создания более доступных документов авторам следует использовать этот способ.

Если несколько определенных регионов перекрываются, приоритет имеет элемент, указанный в документе первым (т.е. на ввод пользователя отвечает именно этот элемент).

Агенты пользователей и авторы должны обеспечивать текстовые альтернативы графических навигационных карт на случай, если графика недоступна или пользователь не может получить к ней доступ. Например, агенты пользователей могут использовать текст атрибута alt для создания текстовых ссылок вместо графической навигационной карты. Такие ссылки могут активизироваться различными способами (клавиатура, голос и т.д.).

Примечание. Элемент MAP не совместим с агентами пользователей для языка HTML версии 2.0.

Примеры клиентских навигационных карт

В следующем примере мы создаем клиентскую навигационную карту для элемента OBJECT. Сы не хотим генерировать содержимое карты при генерации элемента OBJECT, поэтому мы "скроем" элемент MAP в содержимом элемента OBJECT. Затем содержимое элемента MAP будет генерироваться, только если нельзя сегенировать содержимое элемента OBJECT.

<HTML>
   <HEAD>
      <TITLE>Крутая страница!</TITLE>
   </HEAD>
   <BODY>
     <P><OBJECT data="navbar1.gif" type="image/gif" usemap="#map1">
     <MAP name="map1">
       <P>Перемещение по узлу:
       <A href="guide.html" shape="rect" coords="0,0,118,28">Руководство по доступу</a> |
       <A href="shortcut.html" shape="rect" coords="118,0,184,28">Переход</A> |
       <A href="search.html" shape="circle" coords="184,200,60">Поиск</A> |
       <A href="top10.html" shape="poly" coords="276,0,373,28,50,50,276,0">Первые десять</A><
     </MAP>
     </OBJECT>
   </BODY>
</HTML>

Нам может понадобиться генерация содержимого карты, даже если агент пользователя может сгенерировать элемент OBJECT. Например, мы хотим связать навигационную карту с элементом OBJECT и включить текстовую навигационную панель внизу страницы. Чтобы это сделать, определим элемент MAP вне элемента OBJECT:

<HTML>
   <HEAD>
      <TITLE>Крутая страница!</TITLE>
   </HEAD>
   <BODY>
     <P><OBJECT data="navbar1.gif" type="image/gif" usemap="#map1">
     </OBJECT>

     ...продолжение страницы...

     <MAP name="map1">
       <P>Перемещение по узлу:
       <A href="guide.html" shape="rect" coords="0,0,118,28">Руководство по доступу</a> |
       <A href="shortcut.html" shape="rect" coords="118,0,184,28">Переход</A> |
       <A href="search.html" shape="circle" coords="184,200,60">Поиск</A> |
       <A href="top10.html" shape="poly" coords="276,0,373,28,50,50,276,0">Первые десять</A>
     </MAP>
   </BODY>
</HTML>

В следующем примере мы создаем сходную навигационную карту, на этот раз используя элемент AREA. Обратите внимание на использование текста alt:

<P><OBJECT data="navbar1.gif" type="image/gif" usemap="#map1">
   <P>Это навигационная панель.
   </OBJECT>

<MAP name="map1">
 <AREA href="guide.html"
          alt="Руководство по доступу"
          shape="rect"
          coords="0,0,118,28">
 <AREA href="search.html"
          alt="Поиск"
          shape="rect"
          coords="184,0,276,28">
 <AREA href="shortcut.html"
          alt="Переход"
          shape="circle"
          coords="184,200,60">
 <AREA href="top10.html"
          alt="Первые десять"
          shape="poly"
          coords="276,0,373,28,50,50,276,0">
</MAP>

Вот версия с использованием элемента IMG вместо элемента OBJECT (с тем же самым объявлением MAP):

<P><IMG src="navbar1.gif" usemap="#map1" alt="навигационная панель">

В следующем примере показано, как элементы могут совместно использовать навигационные карты.

Вложенные элементы OBJECT полезны для обеспечения fallbacks в случае, если агент пользователя не поддерживает определенные форматы. Например:

<P>
<OBJECT data="navbar.png" type="image/png">
  <OBJECT data="navbar.gif" type="image/gif">
    текст с описанием изображения...
  </OBJECT>
</OBJECT>

Если агент пользователя не поддерживает формат PNG, он пытается сгенерировать изображение в формате GIF. Если он не поддерживает GIF (например, это речевой агент пользователя), он воспроизводит текстовое описание, указанное в содержимсом внутреннего элемента OBJECT. Если элементы OBJECT вложены таким образом, авторы могут обеспечивать совместное использование этими элементами навигационных карт:

<P>
<OBJECT data="navbar.png" type="image/png" usemap="#map1">
  <OBJECT data="navbar.gif" type="image/gif" usemap="#map1">
     <MAP name="map1">
     <P>Перемещение по узлу:
      <A href="guide.html" shape="rect" coords="0,0,118,28">Руководство по доступу</a> |
      <A href="shortcut.html" shape="rect" coords="118,0,184,28">Переход</A> |
      <A href="search.html" shape="circle" coords="184,200,60">Поиск</A> |
      <A href="top10.html" shape="poly" coords="276,0,373,28,50,50,276,0">Первые десять</A>
     </MAP>
  </OBJECT>
</OBJECT>

В следующем примере показано, как можно указать anchors для создания неактивных зон в навигационной карте. Первый anchor определяет небольшую круглую область, с которой не связана ссылка. Второй anchor определяет круглую область большего размера с той же координатой центра. Обе они вместе образуют кольцо, центр которого неактивен, а внешняя часть активна. Порядок определения anchor важен, поскольку меньший круг должен иметь приоритет над большим.

<MAP name="map1">
<P>
<A shape="circle" coords="100,200,50">Я неактивная.</A>
<A href="outer-ring-link.html" shape="circle" coords="100,200,250">Я активная.</A>
</MAP>

Точно так же атрибут nohref элемента AREA объявляет, что с геометрической областью не связана ссылка.

13.6.2 Серверные навигационные карты

Серверные навигационные карты представляют интерес в случаях, когда карта слишком сложна.

Определить серверную навигационную карту можно только для элементов IMG и INPUT. В случае элемента IMG этот элемент должен быть включен в элемент A. В случае элемента INPUT он должен иметь тип "image". В обоих случаях для элемента должен быть установлен логический атрибут ismap [CI].

Когда пользователь активизирует ссылку, щелкнув на изображении, экранные координаты отправляются непосредственно на сервер, на котором располагается документ. Экранные координаты выражаются в виде пикселов относительно изображения. Нормативную информацию об определении пикселов и об их масштабировании см. в [CSS1].

В следующем примере активная область определяет серверную ссылку. Таким образом щелчок в любой точке изображения вызовет передачу координат на сервер.

<P><A href="http://www.acme.com/cgi-bin/competition">
        <IMG src="game.gif" ismap alt="target"></A>

Координаты области, в которой произошел щелчок, передаются на сервер следующим образом. Агент пользователя получает новый адрес URI из адреса URI, указанного в атрибуте href элемента A, добавляя `?', за которым следуют координаты x и y, разделенные запятой. Затем происходит переход по ссылке с использованием нового адреса URI. Например, в данном примере, если пользователь щелкает в точке с координатами x=10, y=27, то новый адрес URI - "http://www.acme.com/cgi-bin/competition?10,27".

Агенты пользователей, не предлагающие пользователям средств выбора определенных координат (например, неграфические агенты пользователей, зависящие от ввода с клавиатуры, речевые агенты пользователей и т.д.) должны при активизации ссылки передавать на сервер координаты "0,0".

13.7 Визуальное представление изображений, объектов и апплетов

Все атрибуты элементов IMG и OBJECT, относящиеся к визуальному выравниванию и представлению, являются устаревшими, вместо них следует использовать таблицы стилей.

13.7.1 Ширина и высота

Определения атрибутов

width = длина [CN]
Переопределение ширины изображения и объекта.
height = длина [CN]
Переопределение для изображения и объекта.

Если указаны атрибуты width и height, они сообщают агентам пользователя о необходимости переопределения исходного размера изображения или объекта этими значениями.

Если объектом является изображение, оно масштабируется. Агенты пользователей должны наилучшим образом масштабировать объект или изображение, чтобы они соответствовали ширине и высоте, определенным автором. Обратите внимание, что длины, выраженные в процентах, зависят от доступного горизонтального или вертикального пространства, а не от исходного размера изображения, объекта или апплета.

Атрибуты height и width дают агентам пользователей представление о размере изображения или объекта, чтобы они могли зарезервировать соответствующее пространство и продолжать генерацию документа, ожидая данных об изображении.

13.7.2 Пространство вокруг изображений и объектов

Атрибуты vspace и hspace определяют свободное пространство слева и справа (hspace) и над и под (vspace) IMG, APPLET, OBJECT. По умолчанию значение этого атрибута не определено, но обычно это небольшое ненулевое значение. Оба атрибута имеют значение типа длина.

13.7.3 Границы

Изображение или объект может окружать граница (например, если она указана пользователем или изображение имеет содержимое элемента A).

Определения атрибутов

border = пикселы
Нежелателен. Атрибут border определяет ширину границы в пикселах. Значение этого атрибута, используемое по умолчанию, зависит от агента пользователя.

13.7.4 Выравнивание

Атрибут align определяет положение IMG, OBJECT или APPLET относительно его содержимого.

Следующие значения атрибута align относятся к положению объекта относительно окружающего текста:

  • bottom: означает, что окно объекта должно быть вертикально выровнено относительно текущей базовой линии. Это значение используется по умолчанию.
  • middle: означает, что центр объекта должен быть выровнен вертикально относительно текущей базовой линии.
  • top: означает, что верх объекта должен быть вертикально выровнен относительно верха текущей текстовой строки.

Два других значения, left и right, приводят к перемещению изображения к текущему левому или правому полю. Они обсуждаются в разделе о плавающих объектах.

Различие интерпретаций атрибута align. Агенты пользователей по-разному интерпретируют атрибут align. Некоторые принимают в расчет только текстовую строку, находящуюся перед элементом, некоторые учитывают текст по обеим сторонам элемента.

13.8 Как указать альтернативный текст

Определения атрибутов

alt = текст [CS]
Для агентов пользователей, не имеющих возможности вывести изображения, формы или апплеты, этот атрибут определяет альтернативный текст. Язык альтернативного текста определяется атрибутом lang.

Для некоторых нетекстовых элементов (IMG, AREA, APPLET и INPUT) авторы должны указывать альтернативный текст, служащий содержимым, если элемент нельзя нормально сгенерировать. Задание альтернативного текста помогает пользователям, не имеющих графических дисплеев, пользователям, браузеры которых не поддерживают формы, visually impaired users, пользователям синтезаторов речи, пользователям, графический агент которых сконфигурирован так, чтобы не выводить изображения и т.д.

Атрибут alt должен быть указан для элементов IMG и AREA. Он не является обязательным для элементов INPUT и APPLET.

В то время как альтернативный текст может быть очень полезным, использовать его нужно осторожно. Авторы должны иметь в виду следующее:

  • Не указывайте несоответствующий альтернативный текст, включая изображения, предназначенные для форматирования страницы, например, alt="red ball" не соответствует изображению, определяющему красный круг для отметки заголовка абзаца. В этих случаях в качестве альтернативного текста следует указать пустую строку (""). Авторам в любом случае рекомендуется не использовать изображения для форматирования страниц; вместо этого следует использовать таблицы стилей.
  • Не указывайте бессмысленный альтернативный текст (например, "dummy text"). Он не только будет frustrate пользователей, но также будет замедлять агенты пользователей, преобразующие текст в речь или текст Бройля.

Информацию об обработке случаев, когда альтернативный текст отсутствует, разработчики могут найти в разделе о генерации альтернативного текста.

Примечание. Подробнее о создании доступных документов HTML см. [WAIGUIDE].


Ссылки в спецификации HTML 4.0

Ссылки

  1. Нормативные ссылки
  2. Информативные ссылки

Нормативные ссылки

[CSS1]
"Каскадные таблицы стилей, уровень 1", Х. В. Ли и Б. Бос, 17 декабря 1996 г.
Находится по адресу http://www.w3.org/TR/REC-CSS1-961217
[DATETIME]
"Форматы дат и времени", Замечание W3C, М. Вольф и К. Уикстед, 15 сентября 1997 г.
Находится по адресу http://www.w3.org/TR/NOTE-datetime
[IANA]
"Назначенные номера", STD 2, RFC 1700, USC/ISI, Дж. Рейнольдс и Дж. Постел, октябрь 1994 г..
Находится по адресу http://ds.internic.net/rfc/rfc1700.txt
[ISO639]
"Коды для представления названий языков", ISO 639:1988.
Подробнее см. http://www.iso.ch/cate/d4766.html.
См. также http://www.sil.org/sgml/iso639a.html.
[ISO3166]
"Коды представления названий стран", ISO 3166:1993.
[ISO8601]
"Элементы данных и форматы обмена -- Обмен информацией -- Представление дат и времени", ISO 8601:1988.
[ISO8879]
"Обработка информации -- Текстовые и офисные системы -- Стандартный обобщенный язык разметки (SGML)", ISO 8879:1986.
Информацию о стандарте см. по адресу http://www.iso.ch/cate/d16387.html.
[ISO10646]
"Информационные технологии -- Универсальный набор символов с кодированием несколькими октетами (UCS) -- Часть 1: Архитектура и основная многоязыковая плоскость", ISO/IEC 10646-1:1993. Текущей спецификации также учтены первые пять изменений в ISO/IEC 10646-1:1993.
[ISO88591]
"Обработка информации -- графические наборы символов с 8-разрядным однобайтовым кодированием -- Часть 1: Латинский алфавит № 1", ISO 8859-1:1987.
[MIMETYPES]
Список зарегистрированных типов содержимого (типы MIME). Список зарегистрированных типов можно загрузить по адресу ftp://ftp.isi.edu/in-notes/iana/assignments/media-types/.
[RFC1555]
"Ивритская кодировка символов для сообщений Интернет", Х. Нуссбахер и И. Бурвинь, декабрь 1993 г.
Находится по адресу http://ds.internic.net/rfc/rfc1555.txt.
[RFC1556]
"Обработка двунаправленных текстов в MIME", Х. Нуссбахер, декабрь 1993 г.
Находится по адресу http://ds.internic.net/rfc/rfc1556.txt.
[RFC1738]
"Универсальный адрес ресурса", Т. Бернерс-Ли, Л. Масинтер и М. МакКахилл, декабрь 1994 г.
Находится по адресу http://ds.internic.net/rfc/rfc1738.txt.
[RFC1766]
"Теги и идентификация языков", Х. Алвестранд, март 1995 г.
Находится по адресу http://ds.internic.net/rfc/rfc1766.txt.
[RFC1808]
"Относительные универсальные адреса ресурсов", Р. Филдинг, июнь 1995 г.
Находится по адресу http://ds.internic.net/rfc/rfc1808.txt.
[RFC2044]
"UTF-8, формат преобразования Unicode и ISO 10646", Ф. Ерго, октябрь 1996 г.
Находится по адресу http://ds.internic.net/rfc/rfc2044.txt.
[RFC2045]
"Многоцелевые расширения почты Интернет (MIME) Часть первая: формат тел сообщений Интернет", Н. Фрид и Н. Боренштейн, ноябрь 1996 г.
Находится по адресу http://ds.internic.net/rfc/rfc2045.txt. Обратите внимание, что этот RFC новее RFC1521, RFC1522 и RFC1590.
[RFC2046]
"Многоцелевые расширения почты Интернет (MIME) Часть вторая: Типы устройств", Н. Фрид и Н. Боренштейн, ноябрь 1996 г.
Находится по адресу http://ds.internic.net/rfc/rfc2046.txt. Обратите внимание, что этот RFC новее RFC1521, RFC1522 и RFC1590.
[RFC2068]
"HTTP версия 1.1 ", Р. Филдинг, Дж. Геттис, Дж. Могул, Х. Фрюстюк Нильсен и Т. Бернерс-Ли, январь 1997 г.
Находится по адресу http://ds.internic. net/rfc/rfc2068.txt.
[RFC2119]
"Ключевые слова для использования в RFC для указания уровня требований", С. Брэднер, март 1997 г.
Находится по адресу http://ds.internic.net/rfc/rfc2119.txt.
[RFC2141]
"Синтаксис URN", Р. Моутс, май 1997 г.
Находится по адресу http://ds.internic.net/rfc/rfc2141.txt.
[SRGB]
"стандартное простарнство цветов в Интернет по умолчанию", версия 1.10, М. Стоукс, М. Андерсон, С. Чандрасекар и Р. Мотта, 5 ноября 1996 г.
Находится по адресу http://www.w3.org/Graphics/Color/sRGB
[UNICODE]
"Стандарт Unicode: версия 2.0", Консорциум Unicode, Addison-Wesley Developers Press, 1996 г. В этой спецификации также учтены ошибки в http://www.unicode.org/unicode/uni2errata/bidi.htm.
Подробнее см. на странице консорциума Unicode по адресу http://www.unicode.org/
[URI]
"Универсальные идентификаторы ресурсов (URI): Общий синтаксис и семантика", Т. Бернерс-Ли, Р. Филдинг, Л. Масинтер, 18 ноября 1997 г.
Находится по адресу http://www.ics.uci.edu/pub/ietf/uri/draft-fielding-uri-syntax-01.txt. Работа над этим документом все еще идет, и обновления находятся по адресам [RFC1738] и [RFC1808].
[WEBSGML]
"предложение TC для адаптации WebSGML для SGML", К. А. Голдфарб, ed., 14 июня 1997 г.
Находится по адресу http://www.sgmlsource.com/8879rev/n1929.htm

Информативные ссылки

[BRYAN88]
"SGML: Руководство автора по стандартному обобщенному языку разметки", М. Брайан, Addison-Wesley Publishing Co., 1988 г.
[CALS]
Continuous Acquisition and Life-Cycle Support (CALS). CALS - это стратегия достижения эффективного создания, обмена и использования цифровых данных для систем вооружения и оборудования Министерства обороны. Более подробную информацию можно найти на странице CALS по адресу at http://navysgml.dt.navy.mil/cals.html.
[CHARSETS]
Зарегистрированные значения наборов символов. Загрузите список зарегистрированны значений по адресу ftp://ftp.isi.edu/in-notes/iana/assignments/character-sets.
[CSS2]
"Каскадные таблицы стилей, уровень 2", Б. Бос, Х. В. Ли, К. Лилли и Я. Джейкобс, ноябрь 1997 г.
Находится по адресу http://www.w3.org/TR/WD-CSS2/
[DCORE]
The Dublin Core: подробнее см. по адресу http://purl.org/metadata/dublin_core
[ETHNO]
"Этнология, языки мира", 12-е издание, Барбара Ф. Граймс, редактор, Летний институт лингвистики, октябрь 1992 г.
[GOLD90]
"Справочник по SGML", К. Ф. Голдфарб, Clarendon Press, 1991.
[HTML30]
"Спецификация языка разметки гипертекстов, версия 3.0", Дейв Рэгетт, сентябрь 1995 г.
Находится по адресу http://www.w3.org/MarkUp/html3/CoverPage.
[HTML32]
"Спецификация HTML 3.2", Дейв Рэгетт, 14 января 1997 г.
Находится по адресу http://www.w3.org/TR/REC-html32
[HTML3STYLE]
"HTML и таблицы стилей", Б. Бос, Д. Рэгетт и Х. Ли, 24 марта 1997 г.
Находится по адресу http://www.w3.org/TR/WD-style
[LEXHTML]
"Лексический анализатор для HTML и основного SGML", Д. Коннолли, 15 июня 1996 г. Находится по адресу http://www.w3.org/TR/WD-html-lex
[PICS]
Platform for Internet Content (PICS). Подробнее см. http://www.w3.org/PICS/
[RDF]
Язык описания ресурсов: подробнее см. http://www.w3.org/Metadata/RDF/
[RFC822]
"Стандарт формата текстовых сообщений Интернет ARPA", пересмотрен Дэвидом Х. Крокером, август 1982 г.
Находится по адресу http://ds.internic.net/rfc/rfc822.txt.
[RFC850]
"Стандарт обмена сообщениями USENET", М. Хортон, июнь 1983.
Находится по адресу http://ds.internic.net/rfc/rfc850.txt.
[RFC1468]
"Японская кодировка символов для сообщений Интернет", Дж. Мюрай, М. Криспин и Э. Ван дер Поль, июнь 1993 г.
Находится по адресу http://ds.internic.net/rfc/rfc1468.txt.
[RFC1630]
"Универсальные идентификаторы ресурсов в WWW: унифицированный синтаксис для выражения имен и адресов объектов в сети, используемый в World-Wide Web", Т. Бернерс-Ли, июнь 1994 г.
Находится по адресу http://ds.internic.net/rfc/rfc1630.txt.
[RFC1866]
"Язык разметки гипертекстов 2.0", Т. Бернерс-Ли и Д. Коннолли, ноябрь 1995 г.
Находится по адресу http://ds.internic.net/rfc/rfc1866.txt.
[RFC1867]
"Выгрузка файлов на базе форм в HTML", Э. Небель и Л. Масинтер, ноябрь 1995 г.
Находится по адресу http://ds.internic.net/rfc/rfc1867.txt. RFC1867 должен быть обновлен по адресу ftp://ftp.ietf.org/internet-drafts/draft-masinter-form-data-01.txt, в данный момент работа продолжается.
[RFC1942]
"Таблицы HTML", Дейв Рэгетт, май 1996 г.
Находится по адресу http://ds.internic.net/rfc/rfc1942.txt.
[RFC2048]
"Многоцелевые расширения почты Интернет (MIME) Часть четвертая: Процедуры регистрации", Н. Фрид, Дж. Кленсин и Дж. Постел, ноябрь, 1996 г.
Находится по адресу http://ds.internic.net/rfc/rfc2048.txt. Обратите внимание, что этот RFC новее RFC1521, RFC1522 и RFC1590.
[RFC2070]
"Интернационализация языка разметки гипертекстов", Ф. Ерго, Ж. Николь, Г. Адамс и М. Дюрст, январь, 1997 г.
Находится по адресу http://ds.internic.net/rfc/rfc2070.txt.
[SGMLOPEN]
Консорциум SGML. Обратитесь к странице Консорциума SGML по адресу http://www.sgmlopen.org/
[SP]
SP - общедоступный синтаксический анализатор SGML.
Находится по адресу ftp://ftp.jclark.com/pub/sp/. Более подробную информацию можно найти по адресу http://www.jclark.com.
[SQ91]
"The SGML Primer", 3-е издание, SoftQuad Inc., 1991.
[TAKADA]
"Обмен многоязыковой информацией через World-Wide Web", Тошихиро Такада, Компьютерные сети и системы ISDN, том 27, № 2, стр. 235-241, ноябрь 1994 г.
[WAIGUIDE]
Принципы разработки доступных документов HTML можно найти на Web-сайте Web Accessibility Initiative (WAI): http://www.w3.org/WAI/.
[VANH90]
"Практическое руководство по SGML", Э. ван Хервайнен, Kluwer Academic Publishers Group, Norwell and Dordrecht, 1990.


Скрипты в документах HTML

18 Скрипты

  1. Введение в скрипты
  2. Разработка документов для агентов пользователей, поддерживающих скрипты
    1. Элемент SCRIPT
    2. Указание языка скрипта
      • Язык скрипта по умолчанию
      • Локальное объявление языка скрипта
      • Ссылки из скрипта на элементы HTML
    3. Внутренние события
    4. Динамическое изменение документов
  3. Разработка документов для агентов пользователей, не поддерживающих скрипты
    1. Элемент NOSCRIPT
    2. Как скрыть скрипт от агентов пользователей

18.1 Введение в скрипты

Клиентский скрипт - это программа, которая может сопровождать документ HTML или непосредственно быть внедренной в него. Эта программа выполняется на клиентской машине при загрузке документа или в другое время, например, когда активизируется ссылка. Поддержка скриптов в HTML не зависит от языка скрипта.

Скрипты предлагают авторам средства усиления интерактивности документов HTML. Например:

  • Скрипты могут оцениваться во время загрузки документа и динамически изменять содержимое документа.
  • Скрипты могут использоваться в форме для обработки вводимых данных. Дизайнеры могут динамически заполнять поля формы в зависимости от значений других полей. Они могут проверять, попадают ли введенные данные в предопределенный диапазон значений, соответствие полей и т.д.
  • Скрипты могут включаться событиями, оказывающими влияние на документ, например, загрузкой, выгрузкой, фокусом элемента, перемещением мыши и т.д.
  • Скрипты могут связываться с управляющими элементами формы (например, с кнопками) для представления элементов пользовательского интерфейса.

Авторы могут прикреплять к документу HTML два типа скриптов:

  • Скрипты, выполняющиеся один раз при загрузке документа агентом пользователя. Скрипты, описанные в элементе SCRIPT, выполняются при загрузке документа. Для агентов пользователя, не обрабатывающих скрипты, авторы могут определить альтернативное содержимое с помощью элемента NOSCRIPT.
  • Скрипты, выполняемые каждый раз, когда происходит определенное событие. Эти скрипты могут назначаться ряду элементов с помощью атрибутов внутренних событий.

Примечание. Более подробная информация приводится в разделах о макросах скриптов.

18.2 Разработка документов для агентов пользователя, поддерживающих скрипты

Следующие разделы относятся к агентам пользователей, поддерживающих скрипты.

18.2.1 Элемент SCRIPT

<!ELEMENT SCRIPT - - %Script;          -- выражение script -->
<!ATTLIST SCRIPT
  charset     %Charset;      #IMPLIED  -- кодировка символов связанного ресурса --
  type        %ContentType;  #REQUIRED - тип содержимого языка скрипты --
  language    CDATA          #IMPLIED  -- предопределенное имя языка серипта --
  src         %URI;          #IMPLIED  -- URI внешнего скрипта --
  defer       (defer)        #IMPLIED  -- агент пользователя может отложить выполнение скрипта --
  >

Начальный тег: обязателен, Конечный тег: обязателен

Определения атрибутов

src = uri [CT]
Этот атрибут определяет местоположение внешнего скрипта.
type = content-type [CI]
Этот атрибут задает язык скрипта содержимого элемента и имеет приоритет над языком скрипта, заданным по умолчанию. Язык скрипта указывается как тип содержимого (например, "text/javascript"). Авторы должны указать значение этого атрибута. Значение по умолчанию для этого атрибута не задано.
language = cdata [CI]
Нежелателен.Этот атрибут определяет язык скрипта содержимого этого элемента. Его значением является идентификатор языка, но поскольку идентификаторы не стандартизованы, этот атрибут является нежелательным, вместо него нужно использовать атрибут type.
defer [CI]
Если этот логический атрибут установлен, он обеспечивает для агента пользователя подсказку о том, что скрипт не будет генерировать содержимое документа (например, "document.write" в javascript) и таким образом агент пользователя может продолжать синтаксический разбор и представление документа.

Атрибуты, определяемые в любом другом месте

  • charset (кодировка символов)

Элемент SCRIPT помещает скрипт в документа. Этот элемент может указываться в элементе HEAD или BODY документа HTML несколько раз.

Скрипт может определяться в содержимом элемента SCRIPT или во внешнем файле. Если не установлен атрибут src, агенты пользователя должны интерпретировать содержимое элемента как скрипт. Если для для атрибута src установлено значение URI, агенты пользователей должны игнорировать содержимое этого элемента и загружать скрипт через URI. Обратите внимание, что атрибут charset относится к кодировке символов скрипта, назначаемого атрибутом src; он не относится к содержимому элемента SCRIPT.

Скрипты оцениваются ядром скрипта, которое агент пользователя должен знать.

Синтаксис данных скрипта зависит от языка скрипта.

18.2.2 Указание языка скрипта

Поскольку документ HTML не предполагает определенный язык скрипта, авторы документа должны явно сообщить агентам пользователей язык каждого скрипта. Это может выполняться с помощью объявления скрипта по умолчанию или с помощью локального объявления.

Язык скрипта по умолчанию

Авторы должны указывать язык скрипта по умолчанию для всех скриптов в документе, включив следующее объявление META в тег HEAD:

<META http-equiv="Content-Script-Type" content="type">

где "type" - тип содержимого, именующий язык скрипта. Примерами значений являются "text/tcl", "text/javascript", "text/vbscript".

Если отсутствует объявление META, значение по умолчанию может устанавливаться с помощью заголовка протокола HTTP "Content-Script-Type".

    Content-Script-Type: тип

где "тип" - тип содержимого, именующий язык скрипта.

Агенты пользователей должны определять язык скрипта по умолчанию для документа в соответствии со следующими действиями (приоритет от высшего к низшему):

  1. Если в объявлении META задается "Content-Script-Type", язык скрипта по умолчанию задается последним таким объявлением в потоке символов.
  2. В противном случае, если в заголовках HTTP задается "Content-Script-Type", язык скрипта по умолчанию задается последним таким объявлением в потоке символов.

Документы, в которых не указан язык скрипта по умолчанию, но содержатся элементы, задающие внутренние события, некорректны. Агенты пользователей могут предпринимать попытки интерпретировать некорректно заданные скрипты, но это не обязательно. Средства разработки должны генерировать информацию о языке скрипта по умолчанию во избежание создания некорректных документов.

Локаьлное объявление языка скрипта

Язык скрипта можно задавать в каждом элементе SCRIPT с помощью атрибута type. Если не указан язык скрипта по умолчанию, этот атрибут должен устанавливаться для каждого элемента SCRIPT. Если задан язык скрипта по умолчанию, атрибут type имеет приоритет над ним.

В этом примере мы объявляем язык скриптов по умолчанию: "text/tcl". В заголовок включается элемент SCRIPT, сам скрипт находится во внешнем файле и использует язык "text/vbscript". Кроме того, один элемент SCRIPT находится в теле документа и содержит другой скрипт, написанный на языке "text/javascript".

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
     "http://www.w3.org/TR/REC-html40/strict.dtd">
<HTML>
<HEAD>
<TITLE>Документ со скриптами</TITLE>
<META http-equiv="Content-Script-Type" content="text/tcl">
<SCRIPT type="text/vbscript" src="http://someplace.com/progs/vbcalc">
</SCRIPT>
</HEAD>
<BODY>
<SCRIPT type="text/javascript">
...код JavaScript...
</SCRIPT>
</BODY>
</HTML>

Ссылки из скрипта на элементы HTML

Каждый язык скриптов имеет собственные соглашения относительно ссылок на объекты HTML в скрипте. В данной спецификации не определяется стандартный механизм для ссылки на объекты HTML.

Однако скрипты должны ссылаться на элементы в соответствии с назначенным им именем. Ядро скриптов должно соблюдать при идентификации элемента следующие правила приоритета: атрибут name имеет преимущество над атрибутом id, если установлены оба эти атрибута. В противном случае используется установленный атрибут.

18.2.3 Внутренние события

Примечание. Сообщаем авторам документов HTML, что в области внутренних событий (например, в привязке скриптов к событиям) весьма вероятны изменения. Работа в этой области ведется членами рабочей группы по объектной модели документов W3C (W3C Document Object Model Working Group) (более подробную информацию можно найти на Web-сайте W3C по адресу http://www.w3.org/).

Определения атрибутов

onload = скрипт [CT]
Событие onload происходит, когда агент пользователя заканчивает загружать окно или все фреймы элемента FRAMESET. Этот атрибут может использоваться в элементах BODY и FRAMESET.
onunload = скрипт [CT]
Событие onunload происходит, когда агент пользователя удаляет документиз окна или фрейма. Этот атрибут может использоваться в элементах BODY и FRAMESET.
onclick = скрипт [CT]
Событие onclick происходит при однократном щелчке кнопки указующего устройства на элементе. Этот атрибут может использоваться с большинством элементов.
ondblclick = скрипт [CT]
Событие ondblclick происходит при двойном щелчке клавиши указующего устройства на элементе. Этот атрибут может использоваться с большинством элементов.
onmousedown = скрипт [CT]
Событие onmousedown происходит при нажатии кнопки указующего устройства на элементе. Этот атрибут может использоваться с большинством элементов.
onmouseup = скрипт [CT]
Событие onmouseup происходит при отпускании кнопки указующего устройства на элементе. Этот атрибут может использоваться с большинством элементов.
onmouseover = скрипт [CT]
Событие onmouseover происходит при перемещении указующего устройства на элемент. Этот атрибут может использоваться с большинством элементов.
onmousemove = скрипт [CT]
Событие onmousemove происходит при перемещении указующего устройства, когда оно находится на элементе. Этот атрибут может использоваться с большинством элементов.
onmouseout = скрипт [CT]
Событие onmouseout происходит при перемещении указующего устройства за пределы элемента. Этот атрибут может использоваться с большинством элементов.
onfocus = скрипт [CT]
Событие onfocus происходит при получении элементом фокуса с помощью указующего устройства или последовательности перехода. Этот атрибут может использоваться со следующими элементами: LABEL, INPUT, SELECT, TEXTAREA и BUTTON.
onblur = скрипт [CT]
Событие onblur происходит при переходе фокуса с этого элемента с помощью указующего устройства или последовательности перехода. Оно может использоваться с теми же элементами, что и onfocus.
onkeypress = скрипт [CT]
Событие onkeypress происходит при нажатии и отпускании клавиши на элементе. Этот атрибут может использоваться с большинством элементов.
onkeydown = скрипт [CT]
Событие onkeydown происходит при нажатии клавиши на элементе. Этот атрибут может использоваться с большинством элементов.
onkeyup = скрипт [CT]
Событие onkeyup происходит при отпускании клавиши на элементе. Этот атрибут может использоваться с большинством элементов.
onsubmit = скрипт [CT]
Событие onsubmit происходит при отправке формы. Оно используется только в элементе FORM.
onreset = скрипт [CT]
Событие onreset происходит при сбросе формы. Оно используется только в элементе FORM.
onselect = скрипт [CT]
Событие onselect происходит при выделении пользователем некоторого текста в текстовом поле. Этот атрибут может использоваться с элементами INPUT и TEXTAREA.
onchange = скрипт [CT]
Событие onchange происходит при потере управляющим элементом фокуса ввода, если его значение было изменено с момента получения фокуса. Этот атрибут используется со следующими элементами: INPUT, SELECT и TEXTAREA.

Действие можно связать с определенным рядом событий, происходящих при взаимодействии пользователя с агентом. Значением каждого из перечисленных выше "внутренних событий" является скрипт. Этот скрипт выполняется, если это событие происходит для этого элемента. Синтаксис скрипта зависит от языка скрипта.

Элементы управления, такие как INPUT, SELECT, BUTTON, TEXTAREA и LABEL реагируют на внутренние события. Если они не отображаются в форме, они могут использоваться для улучшения графического интерфейса доумента.

Например, авторы могут включить в документы кнопки, которые не используются для отправки формы, но при нажатии которых происходит некоторое взаимодействие с сервером.

В следующем примере показан возможное поведение управляющего элемента и интерфейса пользователя в зависимости то внутренних событий.

В этом примере userName является обязательным текстовым полем. Если пользователь не заполняет это поле, событие onblur вызывает функцию JavaScript для проверки значения поля userName.

<INPUT NAME="userName" onblur="validUserName(this.value)">

Вот еще один пример JavaScript:

<INPUT NAME="num"
    onchange="if (!checkNum(this.value, 1, 10))
        {this.focus();this.select();} else {thanks()}"
    VALUE="0">

Вот пример обработчика событий для текстового поля на языке VBScript:

    <INPUT name="edit1" size="50">
    <SCRIPT type="text/vbscript">
      Sub edit1_changed()
        If edit1.value = "abc" Then
          button1.enabled = True
        Else
          button1.enabled = False
        End If
      End Sub
    </SCRIPT>

Вот тот же пример с использованием Tcl:

    <INPUT name="edit1" size="50">
    <SCRIPT type="text/tcl">
      proc edit1_changed {} {
        if {[edit value] == abc} {
          button1 enable 1
        } else {
          button1 enable 0
        }
      }
      edit1 onChange edit1_changed
    </SCRIPT>

Вот пример привязки события внутри скрипта на языке JavaScript. Для начала простой обработчик щелчка мыши:

<BUTTON type="button" name="mybutton" value="10">
<SCRIPT type="text/javascript">
      function my_onclick() {
         . . .
      }
    document.form.mybutton.onclick = my_onclick
 </SCRIPT>
 </BUTTON>

Вот более интересный обработчик окна:

<SCRIPT type="text/javascript">
      function my_onload() {
         . . .
      }

      var win = window.open("some/other/URI")
      if (win) win.onload = my_onload
</SCRIPT>

На языке Tcl это выглядит следующим образом:

 <SCRIPT type="text/tcl">
     proc my_onload {} {
       . . .
     }
     set win [window open "some/other/URI"]
     if {$win != ""} {
         $win onload my_onload
     }
 </SCRIPT>

Обратите внимание, что выражение "document.write" или эквивалентные выражения в обработчиках внутренних событий создают и выполняют запись в новый документ, а не изменяют текущий.

18.2.4 Динамическое изменение документов

Скрипты, выполняемые при загрузке документа, могут динамически изменять содержимое документа. Такая возможность зависит от самого языка скрипта (например, выражение "document.write" в объектной модели HTML поддерживается некоторыми производителями).

Динамическое изменение документа может моделироваться следующим образом:

  1. Все элементы SCRIPT оцениваются по порядку при загрузке документа.
  2. Оцениваются все конструкции скрипта в данном элементе SCRIPT, генерирующие SGML CDATA. Сгенерированный текст вставляется в документ вместо элемента SCRIPT.
  3. Сгенерированные CDATA оцениваются повторно.

Документы HTML ограничиваются требованием соответствия HTML DTD до и после обработки элементов SCRIPT.

В следующем примере показано, как скрипты могут динамически изменять документ. Следующий скрипт:

 <TITLE>Тестовый документ</TITLE>
 <SCRIPT type="text/javascript">
     document.write("<p><b>Hello World!<\/b>")
 </SCRIPT>

имеет тот же эффект, что и разметка HTML:

 <TITLE>Тестовый документ</TITLE>
 <P><B>Hello World!</B>

18.3 Разработка документов для агентов пользователей, не поддерживающих скрипты

В следующих разделах обсуждается создание документов для агентов пользователей, не поддерживающих скрипты.

18.3.1 Элемент NOSCRIPT

<!ELEMENT NOSCRIPT - - (%block;)+
  -- альтернативное содержимое для представления без скриптов -->
<!ATTLIST NOSCRIPT
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

Начальный тег: обязателен, Конечный тег: обязателен

Элемент NOSCRIPT позволяет авторам определять альтернативное содержимое, когда скрипт не выполняется. Содержимое элемента NOSCRIPT должно генерироваться агентам пользователей, поддерживающими скрипты, только в следующих случаях:
  • Агент пользователя сконфигурирован так, чтобы не выполнять скрипты.
  • Агент пользователя не поддерживает язык скриптов, используемый элементом SCRIPT.

Агенты пользователей, не поддерживающие клиентские скрипты, должны представлять содержимое этого элемента.

В следующем примере агент пользователя, выполняющий элемент SCRIPT, включит в документ динамически создаваемые данные. Если агент пользователя не поддерживает скрипты, пользователь может загрузить эти данные по ссылке.

<SCRIPT type="text/tcl">
 ...скирпт на языке Tcl для вставки данных...
</SCRIPT>
<NOSCRIPT>
 <P>Доступ к данным <A href="http://someplace.com/data">.</A>
</NOSCRIPT>

18.3.2 Как скрыть скрипт от агентов пользователей

Агенты пользователей, не распознающие элемент SCRIPT, могут представить его в виде текста. Некоторые ядра скриптов, включая ядра для языков JavaScript, VBScript и Tcl, позволяют включать выражения скриптов в комментарий SGML. Агенты пользователей, не распознающие элемент SCRIPT, будут игнорировать комментарии, а ядро скрипта обнаружит и выполнит его.

Другим решением этой проблемы является хранение скриптов во внешних документах и ссылка на них с помощью атрибута src.

Комментирование скриптов JavaScript
Ядро JavaScript допускает использование строки "<!--" а начале элемента SCRIPT и игнорирует дальнейшие символы, до конца строки. JavaScript интерпретирует символ "//" как начало комментария, продолжающегося до конца текущей строки. Это необходимо, чтобы строка "-->" не разбиралась синтаксическим анализатором JavaScript.

<SCRIPT type="text/javascript">
<!--  скрыть содержимое скрипта от старых браузеров
  function square(i) {
    document.write("Вызов передал ", i ," в функцию.","<BR>")
    return i * i
  }
  document.write("Функция вернула ",square(5),".")
// конец скрытого содержимого  -->
</SCRIPT>

Комментирование скриптов в VBScript
В VBScript комментарием считается весь текст, начиная с символа одиночной кавычки до конца строки. Это может использоваться для комментирования строки "-->" от VBScript, напрмер:

   <SCRIPT type="text/vbscript">
     <!--
       Sub foo()
        ...
       End Sub
     ' -->
    </SCRIPT>

Комментирование скриптов в TCL
В Tcl комментарием считается текст от символа "#" до конца строки:

<SCRIPT type="text/tcl">
<!--  скрыть содержимое скрипта от старых браузеров
  proc square {i} {
    document write "Вызов передал $i в функцию.<BR>"
    return [expr $i * $i]
  }
  document write "Функция вернула [square 5]."
# конец скрытого содержимого  -->
</SCRIPT>

Примечание. Некоторые браузеры считают концом комментариев первый символ ">". В этом случае Вы можете перенести операнды для операторов отношения и сдвига (например, используя "y < x" вместо "x > y") или использовать определенные в языке скрипта способы обхода символа ">".


SGML Declaration of HTML 4.0

20 SGML-объявление HTML 4.0

Примечание. Общее число элементов кода в наборе символов документа данного объявления SGML может включать первые 17 уровней [ISO10646] (17 раз по 65536). Такое ограничение накладывается, поскольку это число в текущем стандарте SGML имеет максимальную длину 8 цифр. Это не значит, что ограничение символов в UCS первыми 17 уровнями останется надолго. Весьма вероятно, что ограничение 8 цифрами в SGML будет устранено, и данная спецификация будет обновлена.

Примечание. Строго говоря, регистрационный номер ISO 177 относится к начальному состоянию [ISO10646] в 1993 году, в то время как в данной спецификации мы всегда подразумеваем последнюю версию ISO 10646. Изменения с 1993 года заключались в добавлении символов и one-time operation reallocating a large number of codepoints for Korean Hangul (Amendment 5).

20.1 Объявление SGML

<!SGML  "ISO 8879:1986"
    --
         Объявление SGML Языка разметки гипертекстов версии 4.0

         С поддержкой первых 17 уровней ISO 10646 и
         увеличенной длиной тегов и литералов и т.д.
    --

    CHARSET
          BASESET  "ISO Registration Number 177//CHARSET
                    ISO/IEC 10646-1:1993 UCS-4 with
                    implementation level 3//ESC 2/5 2/15 4/6"
         DESCSET 0       9       UNUSED
                 9       2       9
                 11      2       UNUSED
                 13      1       13
                 14      18      UNUSED
                 32      95      32
                 127     1       UNUSED
                 128     32      UNUSED
                 160     55136   160
                 55296   2048    UNUSED  -- SURROGATES --
                 57344   1056768 57344

CAPACITY        SGMLREF
                TOTALCAP        150000
                GRPCAP          150000
                ENTCAP          150000

SCOPE    DOCUMENT
SYNTAX
         SHUNCHAR CONTROLS 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
           17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 127
         BASESET  "ISO 646IRV:1991//CHARSET
                   International Reference Version
                   (IRV)//ESC 2/8 4/2"
         DESCSET  0 128 0

         FUNCTION
                  RE            13
                  RS            10
                  SPACE         32
                  TAB SEPCHAR    9

         NAMING   LCNMSTRT ""
                  UCNMSTRT ""
                  LCNMCHAR ".-_:"
                  UCNMCHAR ".-_:"
                  NAMECASE GENERAL YES
                           ENTITY  NO
         DELIM    GENERAL  SGMLREF
                  SHORTREF SGMLREF
         NAMES    SGMLREF
         QUANTITY SGMLREF
                  ATTCNT   60      -- увеличено --
                  ATTSPLEN 65536   -- максимальные значения --
                  LITLEN   65536   -- допускается в объявлении --
                  NAMELEN  65536   -- избегайте фиксированных ограничений --
                  PILEN    65536   -- в реализации агентов пользователей HTML --
                  TAGLVL   100
                  TAGLEN   65536
                  GRPGTCNT 150
                  GRPCNT   64

FEATURES
  MINIMIZE
    DATATAG  NO
    OMITTAG  YES
    RANK     NO
    SHORTTAG YES
  LINK
    SIMPLE   NO
    IMPLICIT NO
    EXPLICIT NO
  OTHER
    CONCUR   NO
    SUBDOC   NO
    FORMAL   YES
  APPINFO NONE
>


Об SGML и HTML

3 Об SGML и HTML

  1. Введение в SGML
  2. Конструкции SGML, используемые в HTML
    1. Элементы
    2. Атрибуты
    3. Ссылки на символы
    4. Комментарии
  3. Как читать HTML DTD
    1. Комментарии DTD
    2. Определения комбинаций параметров
    3. Объявления элементов
      • Определения модели содержимого
    4. Объявления атрибутов
      • Комбинации DTD в определениях атрибутов
      • Логические атрибуты

В этом разделе документа Вы познакомитесь с SGML и узнаете о его отношении к HTML. Полное описание SGML не входит в этот стандарт (см. [ISO8879]).

3.1 Введение в SGML

SGML - это система определения языков разметки. Авторы размечают свои документы, представляя информацию о структуре, представлении и семантике в одном документе. HTML является одним из примеров языка разметки. Вот пример документа на языке HTML:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
     "http://www.w3.org/TR/REC-html40/strict.dtd">
<HTML>
   <HEAD>
      <TITLE>Мой первый документ на языке HTML</TITLE>
   </HEAD>
   <BODY>
      <P>Всем привет!
   </BODY>
</HTML>

Документ HTML состоит из раздела заголовка (здесь - между тэгами <HEAD> и </HEAD>) и тела (здесь - между заголовками <BODY> и </BODY>). Заголовок документа отображается в заголовке (вместе с другой информацией о документе), а содержимое документа находится в теле. В этом примере тело документа состоит только из одного абзаца, помеченного <P>.

Каждый язык разметки, определенный в SGML, называется приложением SGML. Приложение SGML характеризуется:

  1. Объявлением SGML. SGML Объявление указывает, какие символы и разделители могут отображаться в приложении.
  2. Определение типа документа (DTD) (DTD). DTD определяет синтаксис конструкций разметки. DTD может включать дополнительные определения, например, ссылки на комбинации символов.
  3. Спецификация, описывающая семантику, используемую в разметке. Эта спецификация также налагает синтаксические ограничения, которые невозможно выразить при помощи DTD.
  4. Экземпляры документа содержат данные (содержимое) и разметку. Каждый экземпляр содержит ссылку на DTD, которое должно использоваться для интерпретации.

Спецификация HTML 4.0 включает объявление SGML , три определения типа документов (описание их см. в разделе информация о версии HTML ) и список ссылок на символы.

3.2 Конструкции SGML, используемые в HTML

В следующих разделах Вы познакомитесь с конструкциями SGML, используемыми в HTML.

В приложении перечислены некоторые функции SGML, которые не поддерживаются средствами HTML и агентами пользователей, и использования которых следует избегать.

3.2.1 Элементы

Определение типа документа SGML объявляет типы элементов, представляющие структуры или желательное поведение. HTML включает типы элементов, представляющие абзацы, гипертекстовые ссылки, списки, таблицы, изображения и т.д.

Каждое объявление типа элемента обычно включает три части: начальный тэг, содержимое и конечный тэг.

Имя элемента отображается в начальном тэге (пишется <имя-элемента>) и в конечном тэге (пишется </имя-элемента>); не забывайте про слеш перед именем элемента в конечном тэге. Например, начальные и конечные тэги элемента UL определяют список:

<UL>
<LI><P>...элемент списка 1...
<LI><P>...элемент списка 2...
</UL>

Некоторые типы элементов HTML позволяют авторам опускать конечные тэги (например, типы элементов P and LI). Несколько типов элементов также позволяют опускать начальные тэги; например, HEAD и BODY. HTML DTD указывает для каждого типа элемента, являются ли начальный и конечный тэги обязательными.

Некоторые типы элементов HTML не имеют содержимого. Например, элемент перехода на следующую строку BR не имеет содержимого; его роль - прерывание строки текста. Такие пустые элементы никогда не имеют конечных тэгов. Определение типа документа и текст спецификации указывают, является ли тип элемента пустым (не имеет содержимого) или, если он может иметь содержимое, что является допустимым содержимым.

Имена элементов всегда учитывают регистр.

Информацию о правилах, управляющих элементами, (например, что они могут быть вложенными соответствующим образом, конечный тэг закрывает все опущенные начальные тэги вплоть до соответствующего ему начального тэга (раздел 7.5.1) и т.д.) см. в стандарте SGML.

Например, следующий абзац:

<P>Это первый абзац.</P>
...элемент блока...

можно перезаписать без конечного тэга:

<P>Это первый абзац.
...элемент блока...

поскольку начальный тэг <P> закрывается следующим элементом блока. Точно так же, если абзац включен в элемент блока, например:

<DIV>
<P>Это абзац.
</DIV>

конечный тэг включающего элемента блока (здесь - </DIV>) служит также конечным тэгом открытого начального тэга <P>.

Элементы - это не тэги. Некоторые люди называют элементы тэгами (например, "тэг P "). Помните, что элемент - это одно, а тэг (начала или конца, неважно) - другое. Например, элемент HEAD всегда присутствует, даже если начальный и конечный тэги HEAD отсутствуют.

Все типы элементов, объявленные в этой спецификации, перечислены в указателе элементов.

3.2.2 Атрибуты

С элементами могут быть связаны свойства, называемые атрибутами, которые могут иметь значения (стандартные или устанавливаемые авторами или сценариями). Пары атрибут/значение помещаются перед закрывающей скобкой ">" начального тэга элемента. В начальном тэге элемента может быть любое число (допустимых) пар атрибут/значение, разделенных пробелами. Они могут указываться в любом порядке.

В данном примере для элемента H1 установлен атрибут id:

<H1 id="section1">
Это определенный заголовок, спасибо атрибуту id
</H1>

По умолчанию в SGML необходимо, чтобы все значения атрибутов были разделены с помощью двойных (десятичный код ASCII 34) или одинарных кавычек (десятичный код ASCII 39). Одинарные кавычки могут включаться в значение атрибута, если значение отделяется двойными кавычками, и наоборот. Авторы могут также использовать цифровые ссылки на символы для представления двойных (&#34;) и одинарных кавычек (&#39;). Для двойных кавычек авторы могут также использовать комбинацию ссылок на символы &quot;.

В определенных случаях авторы могут указывать значение атрибута без кавычек. Значение атрибута может включать только буквы (a-z и A-Z), цифры (0-9), знаки переноса (десятичный код ASCII 45) и точки (десятичный код ASCII 46). Рекомендуется всегда использовать кавычки.

Имена атрибутов всегда учитывают регистр

Значения атрибутов обычно учитывают регистр. Определение каждого атрибута в списке атрибутов указывается, учитывает ли значение регистр.

Список всех атрибутов, определенных в этой спецификации, приводится в указателе атрибутов.

3.2.3 Ссылки на символы

Ссылки на символы - это числовые или символьные имена символов, которые могут быть включены в документ HTML. Они удобны для обращения к редко используемым символам или к символам, которые трудно или невозможно вводить в средствах разработки документов. Вы увидите ссылки на символы в этом документе; они начинаются со знака "&" и заканчиваются точкой с запятой (;). Вот некоторые примеры:

  • "&lt;" представляет знак <.
  • "&gt;" представляет знак >.
  • "&quot;" представляет знак ".
  • "&#229;" (десятичное число) представляет букву "a" с кружком сверху.
  • "&#1048;" (десятичное число) представляет кириллическую букву "I".
  • "&#x6C34;" (шестнадцатеричное число) представляет китайский знак воды.

Ссылки на символы в HTML подробно обсуждаются дальше в этом разделе под заголовком набор символов документа HTML. В спецификации также содержится список ссылок на символы, которые могут использоваться в документах в формате HTML 4.0.

3.2.4 Комментарии

Комментарии в HTML имеют следующий синтаксис:

<!-- это комментарий -->
<!-- это тоже комментарий,
    он занимает несколько строк -->

Проблемы между открывающим разделителем разметки ("<!") и открывающим разделителем комментария ("--") недопустимы, но их можно использовать между закрывающим разделителем комментария ("--") и закрывающим разделителем разметки (">"). Распространенной ошибкой является включение строки символов переноса ("---") в комментарий. Следует избегать использования в комментариях двух или более символов переноса.

Информация в комментариях не имеет специального значения (например, ссылки на символы не интерпретируются).

3.3 Как читать HTML DTD

Каждое объявление элемента и атрибута в этой спецификации сопровождается фрагментом его определения типа документа. Мы решили включить фрагменты DTD в спецификацию вместо того, чтобы искать более доступные, но более длинные и менее точные средства описания свойств элементов. При помощи следующего учебника читатели, не знакомые с SGML, смогут научиться читать DTD и понимать технические подробности спецификации HTML.

3.3.1 Комментарии DTD

В DTD комментарии могут занимать несколько строк. В DTD комментарии отделяются парой меток "--", например,

<!ELEMENT PARAM - O EMPTY       -- значение именованного свойства -->
Здесь комментарий "значение именованного свойства" объясняет использование типа элемента PARAM. Комментарии в DTD носят информативный характер.

3.3.2 Определения комбинаций параметров

HTML DTD начинается с ряда определений комбинаций параметров. Определение комбинации параметров определяет макрос, на который можно ссылаться в любом месте DTD. Эти макросы не отображаются в документах HTML, они отображаются только в DTD. Другие типы макросов, называемые ссылками на символы, могут использоваться в тексте документа в формате HTML или в значениях атрибутов.

Когда на комбинацию параметров ссылаются в DTD по имени, она разворачивается в строку.

Определение комбинации параметров начинается с ключевого слова <!ENTITY %, за которым следует имя entity, строка в кавычках, в которую разворачивается entity и наконец закрывающий >. Экземпляры комбинаций параметров в DTD начинаются со знака "%", затем идет имя комбинации и заканчивается необязательным символом ";".

В следующем примере определяется, в какую строку будет разворачиваться "%fontstyle;".

<!ENTITY % fontstyle "TT | I | B | BIG | SMALL">

Строка, в которую разворачивается комбинация параметров, может содержать другие имена комбинаций параметров. Эти имена разворачиваются рекурсивно. В следующем примере "%inline;" комбинация параметров включает комбинации "%fontstyle;", "%phrase;", "%special;" и "%formctrl;".

<!ENTITY % inline "#PCDATA | %fontstyle; | %phrase; | %special; | %formctrl;">

Вы часто будете встречать в HTML DTD два DTD entities: "%block;" "%inline;". Они используются, если модель содержимого включает элементы уровня блока и встроенные элементы соответственно (определенные в разделе глобальная структура документа HTML).

3.3.3 Объявления элементов

HTML DTD состоит из объявлений типов элементов и их атрибутов. Объявление начинается с ключевого слова <!ELEMENT и заканчивается символом >. Между ними указываются:

  1. Имя элемента.
  2. Обязателен ли конечный тэг элемента. Два символа переноса после имени элемента означают, что начальный и конечный тэги являются обязательными. Один символ переноса, за которым следует буква "O", указывает, что конечный тэг можно опустить. Две буквы "O" указывают на то, что можно опустить как начальный, так и конечный тэги.
  3. Содержимое элемента, если таковое имеется. Допустимым содержимым элемента называется его модель содержимого. Типы элементов, не имеющие содержимого, называются пустыми элементами. Модель содержимого для таких типов элементов объявляется при помощи ключевого слова "EMPTY".

В этом примере:

    <!ELEMENT UL - - (LI)+>
  • Объявляется тип элемента UL.
  • Два знака переноса указывают, что начальный тэг <UL> и конечный тэг </UL> для этого элемента обязательны.
  • Модель содержимого для этого типа элемента - "по крайней мере один элемент LI". Ниже объясняется, как задать модель содержимого.

В этом примере показано объявление пустого типа элемента:

    <!ELEMENT IMG - O EMPTY>
  • Объявляется тип элемента IMG.
  • Знак переноса, за которым следует буква "O", указывает, что конечный тэг можно опустить, но если модель содержимого - "EMPTY", это правило усиливается, и конечный тэг должен быть опущен.
  • Ключевое слово "EMPTY" означает, что экземпляры этого типа не должны иметь содержимого.

Определения модели содержимого

Модель содержимого описывает, что может содержаться в экземпляре типа элемента. Определения модели содержимого могут включать:

  • Имена допустимых или запрещенных типов элементов (например, элемент UL содержит экземпляры типа элемента LI, а тип элемента P не может включать другие элементы P).
  • Комбинации DTD (например, элемент LABEL включают экземпляры комбинации параметров "%inline;").
  • Текст документа (указываемый SGML-конструкцией "#PCDATA"). Текст может включать ссылки на символы. Помните, что они начинаются с & и заканчиваются точкой с запятой (например, "Herg&eacute;'s adventures of Tintin" содержит ссылку на комбинацию символов для отображения символа "e со знаком ударения").

Модель содержимого элемента указывается с использованием следующего синтаксиса:

( ... )
Разделяет группы.
A | B
Происходит A или B, но не оба.
A , B
Происходят A и B в указанном порядке.
A & B
Происходят A и B в любом порядке.
A?
A происходит ноль или один раз.
A*
A происходит ноль или более раз.
A+
A происходит один или несколько раз.

Вот некоторые примеры HTML DTD:

   <!ELEMENT UL - - (LI)+>

Элемент UL должен содержать один или несколько элементов LI.

   <!ELEMENT DL    - - (DT|DD)+>

Элемент DL должен содержать один или несколько элементов DT или DD в любом порядке.

   <!ELEMENT OPTION - O (#PCDATA)>

Элемент OPTION может содержать только текст и такие entities как &amp; -- это определяется типом данных SGML #PCDATA.

Некоторые типы элементов HTML используют дополнительную функцию SGML для исключения элементов из модели содержимого. Исключенным элементам предшествует символ переноса. Явные исключения имеют приоритет по отношению к допустимым элементам.

В этом примере -(A) означает, что элемент A не может находиться в другом элементе A (то есть ссылки не могут быть вложенными).

   <!ELEMENT A - - (%inline;)* -(A)>

Помните, что тип элемента A является частью DTD комбинации параметров "%inline;", но явно исключается выражением -(A).

Точно так же следующее объявление типа элемента FORM запрещает вложенные формы:

   <!ELEMENT FORM - - (%block;|SCRIPT)+ -(FORM)>

3.3.4 Объявления атрибутов

Объявление атрибутов, которые может иметь элемент, начинается с ключевого слова <!ATTLIST. За ним следует имя элемента с вопросительным знаком, список определений атрибутов и закрывающий символ >. Каждое определение атрибута - это тройка, определяющая:

  • Имя атрибута.
  • Тип значения атрибута или явный набор допустимых значений. Значения, определенные явным образом при помощи DTD, учитывают регистр. Подробнее о типах значений атрибутов см. в разделе основные типы данных HTML.
  • Является ли значение атрибута по умолчанию неявным (ключевое слово "#IMPLIED"), то есть значение по умолчанию устанавливается агентом пользователя (в некоторых случаях с использованием наследования от родительских элементов); всегдаобязательным (ключевое слово "#REQUIRED"); или фиксированным данным значением (ключевое слово "#FIXED"). Некоторые определения атрибутов явным образом указывают значение атрибута по умолчанию.

В этом примере атрибут имя определен для элемента MAP. Атрибут на является обязательным для этого элемента.

<!ATTLIST MAP
  name        CDATA     #IMPLIED
  >

Тип значений, допустимых для этого атрибута, дается как CDATA, тип данных SGML. CDATA - это текст, который может содержать ссылки на символы.

Подробнее о типах данных "CDATA", "NAME", "ID" и др. см. в разделе типы данных HTML.

В следующих примерах показано несколько определений атрибутов:

rowspan     NUMBER     1         -- число строк, охватываемых ячейкой --
http-equiv  NAME       #IMPLIED  -- Имя заголовка ответа HTTP --
id          ID         #IMPLIED  -- уникальный ИД в пределах документа --
valign      (top|middle|bottom|baseline) #IMPLIED

Для атрибута rowspan необходимы значения типа NUMBER. Значение по умолчанию дается явно - "1". Для необязательного атрибута http-equiv необходимы значения типа NAME. Для необязательного атрибута id необходимы значения типа ID. Необязательный атрибут valign ограничен значениями из набора {top, middle, bottom, baseline}.

Комбинации DTD в определениях атрибутов

Определения атрибутов могут также содержать ссылки на комбинации параметров.

В этом примере мы видим, что список определений атрибутов для элемента LINK начинается с комбинации параметров "%attrs;".

<!ELEMENT LINK - O EMPTY               -- ссылка, независимая от устройства -->
<!ATTLIST LINK
  %attrs;                              -- %coreattrs, %i18n, %events --
  charset     %Charset;      #IMPLIED  -- кодировка связанного документа --
  href        %URI;          #IMPLIED  -- URI для связанного документа --
  hreflang    %LanguageCode; #IMPLIED  -- код языка --
  type%ContentType;  #IMPLIED  -- рекомендуемый тип содержимого --
  rel%LinkTypes;    #IMPLIED  -- типы ссылок для перехода вперед --
  rev%LinkTypes;    #IMPLIED  -- типы ссылок для перехода назад --
  media%MediaDesc;    #IMPLIED  -- для генерации на этом устройстве --
  >

Начальный тег: обязателен, Конечный тег: запрещен

Комбинация параметров "%attrs;" определена следующим образом:

<!ENTITY % attrs "%coreattrs; %i18n; %events;">

Комбинация "%coreattrs;" в определении "%attrs;" разворачивается следующим образом:

<!ENTITY % coreattrs
 "idID             #IMPLIED  -- уникальный ИД в пределах документа --
  classCDATA          #IMPLIED  -- список классов, разделенных пробелами --
  style%StyleSheet;   #IMPLIED  -- информация о стиле --
  title%Text;         #IMPLIED  -- рекомендуемый заголовок/распространение --"
  >

Комбинация параметров "%attrs;" определена для удобства, поскольку эти атрибуты определены для большинства типов элементов HTML.

Таким же образом DTD определяет комбинацию параметров "%URI;" как расширение строки "CDATA".

<!ENTITY % URI "CDATA"
    -- Универсальный идентификатор ресурсов, см. [URI]
    -->

Как показано в этом примере, комбинация параметров "%URI;" предоставляет читателям DTD больше информации, чем для типа данных, ожидаемого для этого атрибута. Похожие entities определены для "%Color;", "%Charset;", "%Length;", "%Pixels;" и т.д.

Логические атрибуты

Некоторые атрибуты играют роль логических переменных (например, атрибут selected для элемента OPTION). Их наличие в начальном тэге элемента подразумевает, что значением атрибута является "истина". Их отсутствие означает "ложь".

Логические атрибуты могут принимать только одно значение: собственно имя атрибута (например, selected="selected").

В этом примере атрибут selected определяется как булев.

selected     (selected)  #IMPLIED  -- уменьшенный интервал между элементами --

Для атрибута устанавливается значение "истина", поскольку он находится в начальном тэге элемента:

<OPTION selected="selected">
...contents...
<OPTION>

В HTML логические атрибуты могут быть в минимизированной форме -- в начальном тэге элемента находится только значение атрибута. Таким образом, selected можно установить, написав:

<OPTION selected>

вместо:

<OPTION selected="selected">

Авторам следует знать, что многие агенты пользователей распознают только минимизированную форму логических атрибутов и не распознают полную.


Таблицы стилей в документах HTML

14 Таблицы стилей

  1. Введение в таблицы стилей
  2. Как добавить стиль в HTML
    1. Установка языка таблицы стилей по умолчанию
    2. Встроенная информация о стиле
    3. Информация о стиле в заголовке: элемент STYLE
    4. Типы устройств
  3. Внешние таблицы стилей
    1. Предпочитаемые и альтернативные таблицы стилей
    2. Указание внешних таблиц стилей
  4. Каскады таблиц стилей
    1. Каскады, зависящие от устройств
    2. Наследование и каскады
  5. Как скрыть информацию о стиле от агентов пользователей
  6. Привязка таблиц стилей с помощью заголовков HTTP

14.1 Введение в таблицы стилей

Таблицы стилей представляют наибольшее достижение для дизайнеров Web-страниц, расширяя возможности улучшения внешнего вида страниц. В научных средах, в которых и зародилась Web, люди более сосредоточены на содержании документов, нежели на их представлении. По мере открытия Web прочими людьми ограничения HTML стали источником разочарований, и авторам пришлось уклоняться от стилистических ограничений HTML. Хотя намерения и были добрыми - улучшение представления Web-страниц, -- технологии имели нежелательные побочные эффекты. Эти технологии работали только для некоторых, только иногда, но не для всех и не всегда. Сюда включаются:

  • Использование собственных расширений HTML
  • Преобразование текста в изображения
  • Использование изображений для управления пустым пространством
  • Использование таблиц для размещения объектов на станице
  • Написание программ вместо использования HTML

Эти технологии существенно усложняют Web-страницы, ограничивают гибкость, создают проблемы взаимодействия и создают сложности для людей с физическими недостатками.

Таблицы стилей решают эти проблемы, одновременно превосходя ограниченные механизмы представления в HTML. Таблицы стилей упрощают определение интервалов между строками текста, отступов, цветов, используемых для текста и фона, размера и стиля шрифтов и другой информации .

Например, следующая таблица стилей CSS (хранящаяся в файле "special.css") зеленый устанавливает цвет текста абзаца и окружает его сплошной красной рамкой:

P.special {
color : green;
border: solid red;
}

Авторы могут связывать таблицы стилей с исходным документом HTML с помощью элемента LINK:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
   "http://www.w3.org/TR/REC-html40">
<HTML>
  <HEAD>
    <LINK href="special.css" rel="stylesheet" type="text/css">
  </HEAD>
  <BODY>
    <P class="special">В этом абзаце текст должен быть зеленым.
  </BODY>
</HTML>

HTML 4.0 обеспечивает поддержку следующих функций таблиц стилей:

Гибкое размещение информации о стиле
Помещение таблиц стилей в отдельные файлы упрощает их повторное использование. Иногда полезно включать инструкции по представлению в документ, к которому они применяются, в начало документа или в атрибуты элементов в теле документа. Для упрощения управления стилем сайта в данной спецификации описывается использование заголовков HTTP для установки таблиц стилей, применяемых к документу.
Независимость от языков таблиц стилей
Данная спецификация не привязывает HTML к конкретному языку таблиц стилей. Это позволяет использовать широкий диапазон таких языков, например, простые языки для большинства пользователей и более сложные для более специализированных случаев. Во всех примерах, приведенных ниже, используется язык CSS (Каскадные таблицы стилей) [CSS1], но можно использовать и другие языки.
Каскады
Эта возможность обеспечивается некоторыми языками таблиц стилей, такими как CSS, для объединения информации о стиле из нескольких источников. Это может быть, например, корпоративные положения о стиле, стили, общие для группы документов, а также стили, специфичные для одного документа. С использованием раздельного хранения эти таблицы стилей могут использоваться повторно, что упрощает работу авторов и повышает эффективность сетевого кэширования. Каскад определяет упорядоченную последовательность таблиц стилей, в которой правила более поздних таблиц имеют приоритет над более ранними. Не все языки таблиц стилей поддерживают каскады.
Зависимость от устройств
HTML позволяет авторам разрабатывать документы независимо от устройств. Это позволяет пользователям обращаться к Web-страницам с использованием различных устройств, например, графических дисплеев для компьютеров под управлением Windows, Macintosh OS и X11, телевизионных устройств, специальным образом адаптированных телефонов и портативных устройств на базе PDA, речевых браузеров и тактильных устройств на базе азбуки Бройля.

Таблицы стилей, напротив, применяются к конкретным устройствам или группам устройств. Таблица стилей, предназначенная для экрана, может применяться при печати, но бесполезна для речевых браузеров. Данная спецификация позволяет Вам определить широкие категории устройств, к которым применяется конкретная таблица стилей. Это позволяет агентам пользователей избежать загрузки ненужных таблиц стилей. Языки таблиц стилей могут включать функции описания зависимости от устройств в одной таблице.

Альтернативные стили
Авторы могут предлагать читателям несколько способов просмотра документа. Например, таблица стилей для представления компактных документов с мелким шрифтом, или таблица, задающая крупные шрифты для удобства чтения. Данная спецификация позволяет авторам указать предпочитаемую таблицу стилей, а также альтернативные таблицы для определенных пользователей или устройств. Агенты пользователей должны предоставлять пользователям возможность выбора одной из альтернативных таблиц или отключать все таблицы стилей.
Вопросы производительности
Некоторые пользователи высказывали сомнения относительно скорости работы таблиц стилей. Например, загрузка внешней таблицы стилей может привести к задержке общего представления материала для пользователя. Подобные ситуации возникают и в том случае, если в заголовок документа включен длинный набор правил относительно стиля.

Эти проблемы решаются путем предоставления авторам возможности включать инструкции по представлению в каждый элемента HTML. Благодаря этому информация о представлении всегда доступна ко времени представления элемента агентом пользователя.

Во многих случаях авторы воспользуются преимуществами использования общей таблицы стилей для группы документов. В этом случае распределение правил стиля в документе приведет к снижению производительности по сравнению с использованием связанной таблице стилей, поскольку для большинства документов таблицы стилей уже будет находиться в локальном кэше. К этому эффекту приведет общедоступность хороших таблиц стилей.

14.2 Как добавить стиль в HTML

Примечание. В примере таблицы стилей по умолчанию для HTML 4.0, включенном в [CSS2], выражена общепринятая информация о стиле для каждого элемента. Авторы могут воспользоваться этим ресурсом.

Документы в формате HTML могут содержать правила таблиц стилей непосредственно или могут импортировать таблицы стилей.

В HTML можно использовать все языки таблиц стилей. Простого языка таблиц стилей может быть достаточно для большинства пользователей, в то время как другие языки могут подходить для более специализированных задач. В примерах в данной спецификации используется язык "Каскадные таблицы стилей" ([CSS1]), сокращенно CSS.

Синтаксис данных стиля зависит от языка таблицы стилей.

14.2.1 Установка языка таблицы стилей по умолчанию

Авторы должны указывать язык таблицы стилей для информации о стиле, связанной с документом HTML.

Для установки языка таблицы стилей для документа по умолчанию следует использовать элемент META. Например, чтобы установить по умолчанию язык CSS, следует поместить в раздел HEAD следующее объявление:

<META http-equiv="Content-Style-Type" content="text/css">

зык таблиц стилей по умолчанию можно также установить с помощью заголовков HTTP. Показанное выше объявление с использованием тэга META эквивалентно заголовку HTTP:

Content-Style-Type: text/css

Агенты пользователей должны определять язык таблиц стилей по умолчанию для документа в соответствии со следующими шагами (от высшего приоритета к низшему):

  1. Если в объявлении META задается "Content-Style-Type", язык таблиц стилей определяет последнее объявление в потоке символов.
  2. В противном случае, если "Content-Style-Type" задается в заголовках HTTP, язык таблиц стилей определяет последний заголовок в потоке символов.
  3. В противном случае по умолчанию используется язык "text/css".

Документы, включающие элементы, в которых устанавливается атрибут style, но не определяется язык таблиц стилей по умолчанию, являются некорректными. Средства разработки должна генерировать информацию о языке таблиц стилей по умолчанию (обычно с помощью объявлений META), чтобы агенты пользователей не полагались на язык по умолчанию "text/css".

14.2.2 Встроенная информация о стиле

Определения атрибутов

style = style [CN]
Этот атрибут определяет информацию о стиле текущего элемента.

style Атрибут style определяет информацию о стиле одного элемента. Язык таблиц стилей встроенных правил стиля определяется языком таблиц стилей по умолчанию. Синтаксис данных стиля зависит от языка таблиц стилей.

В данном примере устанавливается информация о цвете и размере шрифта текста определенного абзаца.

<P style="font-size: 12pt; color: fuchsia">Что за прелесть эти таблицы стилей!

В CSS объявления свойств имеют форму "имя : значение" и разделяются точкой с запятой.

Атрибут style может использоваться для применения определенного стиля к отдельному элементу HTML. Если стиль повторно используется для нескольких элементов, авторы должны использовать элемент STYLE для перегруппировки этой информации. Для оптимальной гибкости авторам следует определять стили во внешних таблицах стилей.

14.2.3 Информация о стиле в заголовке: элемент STYLE

<!ELEMENT STYLE - - %StyleSheet        -- информация о стиле -->
<!ATTLIST STYLE
  %i18n;                               -- lang, dir, для использования с заголовком --
  type        %ContentType;  #REQUIRED - тип содержимого языка стилей --
  media       %MediaDesc;    #IMPLIED  -- для использования с этими устройствами --
  title       %Text;         #IMPLIED  -- рекомендуемый заголовок --
  >

Начальный тэг: обязателен, Конечный тэг: обязателен

Определения атрибутов

type = content-type [CI]
Этот атрибут определяет язык таблиц стилей для содержимого элемента и имеет приоритет над языком таблиц стилей, ипользуемы. Язык таблиц стилей указывается как тип содержимого (например, "text/css"). Авторы должны указать значение для этого атрибута; для него нет значения по умолчанию.
media = дескрипторы устройств [CI]
Этот атрибут задает целевое устройство для информации о стиле. Это может быть один дескриптор устройства или список дескрипторов, разделенных запятыми. По умолчанию устанавливается значение "screen".

атрибуты, определяемые в другом месте

  • lang (информация о языке), dir (направление текста)

Элемент STYLE позволяет авторам помещать правила таблиц стилей в раздел head документа. В HTML допустимо любое число элементов STYLE в разделе HEAD.

Агенты пользователей, не поддерживающие таблицы стилей или не поддерживающие определенный язык таблиц стилей, используемый в элементе STYLE, не должны показывать элемент STYLE. Ошибкой будет генерировать его содержимое как часть текста документа. Некоторые языки таблиц стилей поддерживают синтаксис для того, чтобы не показывать содержимое несоответствующим спецификации агентам пользователей.

Синтаксис данных стиля зависит от языка таблицы стилей.

Некоторые реализации таблиц стилей могут поддерживать большее разнообразие правил для элемента STYLE, чем в атрибуте style. Например, в CSS правила могу объявляться в элементе STYLE для:

  • Всех экземпляров определенного элемента языка HTML (например, для всех элементов P, всех элементов H1 и т.д.)
  • Всех экземпляров элемента HTML, принадлежащих определенному классу (т.е. для атрибута class которых установлено определенное значение).
  • Отдельных экземпляров элемента языка HTML (т.е. для атрибута id которого установлено определенное значение).

Правила приоритета и наследования правил таблиц стилей зависят от языка таблиц.

Следующее объявление CSS STYLE приводит к появлению границы вокруг всех элементов H1 в документе и центрированию их на странице.

<HEAD>
 <STYLE type="text/css">
   H1 {border-width: 1; border: solid; text-align: center}
 </STYLE>
</HEAD>

Чтобы указать, что эта информация о стиле должна применяться только к элементам H1 определенного класса, можно изменить определение следующим образом:

<HEAD>
 <STYLE type="text/css">
   H1.myclass {border-width: 1; border: solid; text-align: center}
 </STYLE>
</HEAD>
<BODY>
 <H1 class="myclass"> Наш стиль влияет на этот заголовок уровня H1</H1>
 <H1> А на этот заголовок наш стиль не влияет</H1>
</BODY>

И, наконец, для ограничения области действия информации о стиле единственным экземпляром элемента H1, установите атрибут id:

<HEAD>
 <STYLE type="text/css">
   #myid {border-width: 1; border: solid; text-align: center}
 </STYLE>
</HEAD>
<BODY>
 <H1 class="myclass"> На этот заголовок H1 стиль не влияет</H1>
 <H1 id="myid"> А на этот влияет </H1>
 <H1> На этот опять не влияет </H1>
</BODY>

Хотя информация о стиле может устанавливаться почти для всех элементов HTML, два элемента, DIV и SPAN, особенно полезны тем, что они не накладывают никакой семантики представления (кроме block-level vs. inline). Вместе с таблицами стилей эти элементы позволяют пользователям неограниченно расширять язык HTML, особенно при использовании атрибутов class и id.

В следующем примере элемент SPAN используется для установки малых прописных букв для стиля шрифта первых нескольких слов абзаца.

<HEAD>
 <STYLE type="text/css">
  SPAN.sc-ex { font-variant: small-caps }
 </STYLE>
</HEAD>
<BODY>
<P><SPAN class="sc-ex">Первые несколько</SPAN> слов абзаца выделены малыми прописными буквами.
</BODY>

В следующем примере мы используем элемент DIV и атрибут class для установки выравнивания текста для ряда абзацев, составляющих введение в научную статью. Информация о стиле может повторно использоваться для других разделов введения путем установки атрибута class в любом месте документа.

<HEAD>
 <STYLE type="text/css">
   DIV.Abstract { text-align: justify }
 </STYLE>
</HEAD>
<BODY>
 <DIV class="Abstract">
   <P>The Chieftain product range is our market winner for
     the coming year. This report sets out how to position
     Chieftain against competing products.

   <P>Chieftain replaces the Commander range, which will
     remain on the price list until further notice.
 </DIV>
</BODY>

14.2.4 Типы устройств

HTML позволяет авторам создавать документы, использующие характеристики устройства, на котором будет представляться документ (например, графические дисплеи, телевизионные экраны, переносные устройства, речевые браузеры, тактильные устройства на базе азбуки Бройля и т.д.). С помощью атрибута media авторы могут позволить агентам пользователей загружать и применять таблицы стилей выборочно. См. список распознаваемых дескрипторов устройств.

Объявления в следующем примере применяются к элементам H1. При показе на проекторе во время встречи все экземпляры будут отображаться синим цветом. При печати они будут отцентрированы.

<HEAD>
 <STYLE type="text/css" media="projection">
    H1 { color: blue}
 </STYLE>

 <STYLE type="text/css" media="print">
   H1 { text-align: center }
 </STYLE>

Этот пример добавляет звуковые эффекты для устройства речевого вывода:

 <STYLE type="text/css" media="aural">
   A { cue-before: uri(bell.aiff); cue-after: uri(dong.wav)}
 </STYLE>
</HEAD>

Управление устройствами особенно интересно при использовании с внешними таблицами стилей, поскольку агенты пользователей могут сэкономить время, загружая из сети только таблицы стилей, применяющиеся к текущему устройству. Например, речевые браузеры могут не загружать таблицы стилей, разработанные для визуального представления. Подробнее см. в разделе о зависящих от устройств каскадах.

14.3 Внешние таблицы стилей

Авторы могут отделять таблицы стилей от документов HTML. Это дает следующие преимущества:

  • Авторы и менеджеры Web-сайтов могут совместно использовать таблицы стилей в ряде документов (и сайтов).
  • Авторы могут изменять таблицы стилей без изменения документа.
  • Агенты пользователей могут загружать таблицы стилей выборочно (в зависимости от описаний устройств).

14.3.1 Предпочитаемые и альтернативные таблицы стилей

HTML позволяет авторам связывать с документом любое число внешних таблиц стилей. Язык таблиц стилей определяет взаимодействие нескольких внешних таблиц стилей (например, правила "каскадов" CSS).

Авторы могут указать ряд взаимоисключающих таблиц стилей, называемых альтернативными. Пользователи могут выбирать таблицы, которые им больше нравятся. Например, автор может указать один стиль для небольших экранов, другой - для слабовидящих пользователей (например, с использованием крупного шрифта). Агенты пользователей должны предоставлять пользователям возможности выбора одной из альтернативных таблиц.

Автор может указать, что одна из альтернатив является предпочтительной. Агенты пользователей должны применять предпочитаемые автором таблицы стилей, если пользователь не выбрал другую альтернативу.

Авторы могут сгруппировать несколько альтернативных таблиц стилей (включая предпочитаемые автором) под одним именем стиля. Если пользователь выбирает именованный стиль, агент пользователя должен применять все таблицы стилей с этим именем. Агенты пользователей не должны применять альтернативные таблицы стилей с другим именем стиля. Как присвоить имя группе стилей, описано в разделе об определении внешних таблиц стилей.

Авторы также могут указать постоянные таблицы стилей, которые агенты пользователей должны применять в дополнение к альтернативным таблицам стилей.

При применении таблицы стилей агенты пользователей должны учитывать дескрипторы устройств.

Агенты пользователей также должны позволять пользователям полностью отключать таблицы стилей автора; в этом случае агент пользователя не должен применять ни одну из таблиц стилей.

14.3.2 Указание внешних таблиц стилей

Авторы указывают внешние таблицы стилей с помощью атрибутов элемента LINK:

  • Установите в атрибуте href местоположение файла таблицы стилей. Значением атрибута href должен быть URI.
  • Установите для атрибута type значение, указывающее язык связанного ресурса (таблицы стилей). Это позволяет агентам пользователей не загружать таблицы стилей, использующие неподдерживаемые языки.
  • Укажите, является ли таблицы стилей постоянно, предпочитаемой или альтернативной:
    • Чтобы таблицы была постоянной, установите для атрибута rel значение "stylesheet", и не устанавливайте атрибут title.
    • Чтобы таблица была предпочитаемой, установите для атрибута rel значение "stylesheet", и дайте таблице имя с помощью атрибута title.
    • Чтобы указать альтернативную таблицу, установите для атрибута rel значение "alternate stylesheet" а дайте таблице имя с помощью атрибута title.

Агенты пользователей должны обеспечивать пользователям средства просмотра и выбора таблицы стилей из списка альтернатив. Для атрибута title рекомендуется устанавливать значение, которое будет представлять эту таблицу в списке.

В этом примере мы сначала определяем постоянную таблицу стилей, находящуюся в файле mystyle.css:

<LINK href="mystyle.css" rel="stylesheet" type="text/css">

Установка атрибута title назначает ее предпочитаемой автором таблицей:

 <LINK href="mystyle.css" title="Compact" rel="stylesheet" type="text/css">

Добавление ключевого слова "alternate" а атрибут rel сделает ее альтернативной таблицей стилей:

<LINK href="mystyle.css" title="Medium" rel="alternate stylesheet" type="text/css">

Подробнее о внешних таблицах стилей Вы можете узнать в разделе о ссылках и внешних таблицах стилей.

Авторы также могут использовать для установки предпочитаемой таблицы стилей элемент META. Например, чтобы установить предпочитаемую таблицу стилей "compact" (см. предыдущий пример), авторы могут включить в элемент HEAD следующую строку:

<META http-equiv="Default-Style" content="compact">

Предпочитаемую таблицу стилей можно также указать с помощью заголовков HTTP. Объявление META выше эквивалентно заголовку HTTP:

Default-Style: "compact"

Если предпочитаемая таблица стилей указывается двумя или более элементами META или заголовками HTTP, преимущество имеет последнее объявление. Считается, что заголовки HTTP обрабатываются раньше, чем объявления HEAD.

Если предпочитаемая таблица стилей задается двумя или более элементами LINK, преимущество имеет первая.

Предпочитаемые таблицы стилей, задаваемые с помощью META или заголовков HTTP имеют преимущество над таблицами, задаваемыми элементом LINK.

14.4 Каскады таблиц стилей

Каскадные языки таблиц стилей, такие как CSS, позволяют использовать информацию о стиле из нескольких источников. Однако не все языки таблиц стилей поддерживают каскады. Чтобы определить каскад, авторы указывают последовательность элементов LINK и/или STYLE. Каскад информации таблиц стилей производится в порядке указания элементов в разделе HEAD.

Примечание. В данной спецификации не описано каскадирование таблиц стилей разных языков. Авторам следует избегать смешивания языков.

В следующем примере мы определяем две альтернативные таблицы стилей с именем "compact". Если пользователь выбирает стиль "compact", агент пользователя должен применять обе внешние таблицы, а также постоянную таблицу "common.css". Если пользователь выбирает стиль "big print", применяться будут только альтернативная таблица "bigprint.css" и постоянная таблица "common.css".

<LINK rel="alternate stylesheet" title="compact" href="small-base.css" type="text/css">
<LINK rel="alternate stylesheet" title="compact" href="small-extras.css" type="text/css">
<LINK rel="alternate stylesheet" title="big print" href="bigprint.css" type="text/css">
<LINK rel="stylesheet" href="common.css" type="text/css">

Вот пример каскада, в котором задействованы оба элемента - LINK и STYLE.

<LINK rel="stylesheet" href="corporate.css" type="text/css">
<LINK rel="stylesheet" href="techreport.css" type="text/css">
<STYLE type="text/css">
    p.special { color: rgb(230, 100, 180) }
</STYLE>

14.4.1 Каскады, зависящие от устройств

Каскад может включать таблицы стилей, применяемые к различным устройствам. Элементы LINK и STYLE могут использоваться с атрибутом media. Агент пользователя несет ответственность за отфильтровывание таблиц стилей, не применяющихся к текущему устройству.

В следующем примере мы определяем каскад, в котором таблица стилей "corporate" представляется в нескольких версиях: одна для печати, другая для экранного представления, третья для речевых браузеров (полезная, например, при чтении электронной почты в машине). Таблица "techreport" применяется ко всем устройствам. Цветная rule, определяемая элементом STYLE, используется для печати и для экрана, но не для звукового представления.

<LINK rel="stylesheet" media="aural" href="corporate-aural.css" type="text/css">
<LINK rel="stylesheet" media="screen" href="corporate-screen.css" type="text/css">
<LINK rel="stylesheet" media="print" href="corporate-print.css" type="text/css">
<LINK rel="stylesheet" href="techreport.css" type="text/css">
<STYLE type="text/css">
    p.special { color: rgb(230, 100, 180) }
</STYLE>

14.4.2 Наследование и каскады

Если агент пользователя собирается представлять документ, ему необходимо найти значения для свойств стиля, например, семейство шрифтов, начертание, размер шрифта, длину строки, цвет текста и т.д. Точный механизм зависит от языка таблиц стилей, но в общем применяется следующее:

Механизм каскадирования используется, если к элементу применяется ряд правил стиля. Этот механизм позволяет агенту пользователя сортировать правила по специфичности и определять, какое правило нужно применить. Если правило невозможно найти, следующий шаг зависит от наследования свойства. Не все свойства могут наследоваться. Для этих свойств язык таблиц стилей обеспечивает значения по умолчанию для использования в случае отсутствия явных правил для конкретного элемента.

Если свойство может наследоваться, агент пользователя проверяет непосредственно элемент, в который вложен текущий элемент, и ищет правило, применяющееся к нему. Этот процесс продолжается до тех пора, пока применимое правило не будет обнаружено. Этот механизм обеспечивает компактное задание таблиц стилей. Например, авторы могут указать семейство шрифтов для всех элементов в разделе BODY с помощью одного правила для элемента BODY.

14.5 Как скрыть информацию о стиле от агентов пользователей

Некоторые языки таблиц стилей поддерживают синтаксис, позволяющий авторам скрывать содержимое элементов STYLE от несоответствующих агентов пользователей.

В данном примере для CSS показано, как можно скрыть содержимое элементов STYLE, чтобы гарантировать, что более старые несоответствующие спецификации агенты пользователей не будут представлять их в виде текста.

<STYLE type="text/css">
<!--
   H1 { color: red }
   P  { color: blue}
   -->
</STYLE>

14.6 Привязка таблиц стилей с помощью заголовков HTTP

Менеджеры Web-серверов могут сконфигурировать сервер таким образом, чтобы таблица стилей применялась к группе страниц. Заголовок HTTP Link, описанный в [RFC2068], раздел 19.6.1.2, действует так же, как элемент LINK, с теми же атрибутами и значениями. Несколько заголовков Link соответствуют нескольким элементам LINK в том же порядке. Например,

Link: <http://www.acme.com/corporate.css>; REL=stylesheet

соответствует:

<LINK rel="stylesheet" href="http://www.acme.com/corporate.css">

Можно задать несколько альтернативных стилей с помощью нескольких заголовков Link, а затем использовать атрибут rel для определения стиля по умолчанию.

В следующем примере стиль "compact" применяется по умолчанию, поскольку в нем отсутствует ключевое слово "alternate" для атрибута rel.

Link: <compact.css>; rel="stylesheet"; title="compact"
Link: <bigprint.css>; rel="alternate stylesheet"; title="big print"

Это работает и при отправке документов HTML по электронной почте. Некоторые агенты электронной почты могут изменять порядок заголовков [RFC822]. Чтобы защитить стиль от изменения порядка каскадов для таблиц, задаваемых заголовками Link, авторы могут использовать объединение заголовков для объединения нескольких экземпляров одного и того же поля заголовка. Кавычки необходимы только в случае, если значения атрибутов включают пробелы. Используйте SGML entities для ссылок на символы, недопустимые в заголовках HTTP или электронной почты или символов, которые могут быть изменены при передаче через шлюзы.

Элементы LINK и META, implied заголовками HTTP, определяются как встреченные раньше явного элемента LINK and META а разделе HEAD документа.


Таблицы в документах HTML

11 Таблицы

  1. Введение в таблицы
  2. Элементы построения таблиц
    1. Элемент TABLE
      • Направление таблиц
    2. Captions таблиц: элемент CAPTION
    3. Группы строк: элементы THEAD, TFOOT и TBODY
    4. Группы столбцов: элементы COLGROUP и COL
      • Элемент COLGROUP
      • Элемент COL
      • Подсчет числа столбцов в таблице
      • Подсчет ширины столбцов
    5. Строки таблицы: элемент TR
    6. Ячейки таблицы: элементы TH и TD
      • Ячейки, span несколько строк или столбцов
  3. Форматирование таблиц визуальными агентами пользователей
    1. Границы и rules
    2. Горизонтальное и вертикальное выравнивание
      • Наследование параметров выравнивания
    3. Поля ячейки
  4. Представление таблиц невизуальными агентами пользователей
    1. Связь информации заголовка с ячейками данных
    2. Категоризация ячеек
    3. Алгоритм поиска заголовочной информации
  5. Пример таблицы

11.1 Введение в таблицы

Модель таблиц HTML позволяет авторам упорядочивать данные -- текст, форматированный текст, изображения, ссылки, формы, поля форм, другие таблицы и т.д. - в строки и столбцы ячеек.

С каждой таблицей может быть связан заголовок (см. элемент CAPTION), предоставляющий краткое описание таблицы. Можно также указать и более длинное описание (с помощью атрибута summary) для удобства людей, использующих агенты на базе азбуки Бройля или речи.

Строки таблицы могут группироваться в разделы заголовков, нижних заголовков и тела, (с помощью элементов THEAD, TFOOT и TBODY соответственно). Группы строк convey дополнительную структурную информацию и могут генерироваться агентами пользователей различными способами, отображающими эту структуру. Агенты пользователей могут использовать подразделение на заголовки/тело/нижние заголовки для поддержки прокрутки тела независимо от заголовков. При печати длинных таблиц информация из заголовков может повторяться на каждой странице таблицы.

Авторы также могут группировать столбцы для предоставления дополнительной структурной информации, которая может использоваться агентами пользователей. Более того, авторы могут объявлять свойства столбцов в начале определения таблицы (с помощью элементов COLGROUP и COL) таким образом, который позволяет агентам пользователей генерировать таблицу последовательно, а не ждать считывания всех данных таблицы перед тем, как начать генерацию.

Ячейки таблицы могут содержать "заголовок" (см. элемента TH) или "данные" (см. элемент TD). Ячейки могут распространяться на несколько строк или столбцов. Модель таблиц языка HTML 4.0 позволяет авторам помечать каждую ячейку, так что невизуальным агентам пользователей будет проще работать с информацией о ячейках. Эти механизмы не только существенно облегчают доступ пользователям с физическими недостатками, но и делают его обработку таблиц возможной для мультирежимных беспроводных браузеров с ограниченными возможностями отображения (например, Web-совместимых пейджеров и телефонов).

Не следует использовать таблицы только как средство компоновки содержимого документа, поскольку это может вызвать проблемы при генерации для невизуальных средств. Кроме того, если метки использовать с графикой, это может привести к тому, что пользователям придется выполнять горизонтальную прокрутку, чтобы просмотреть таблицу, созданную в системе с большим экраном. Для уменьшения возможности этих проблем авторам следует использовать для компоновки документа таблицы стилей, а не таблицы.

Примечание. В этой спецификации более подробная информация о таблицах приводится в разделах о вопросах применения и rationale создания таблиц.

Ниже показана простая таблица, на примере которой иллюстрируются некоторые возможности модели таблиц языка HTML. Следующее определение:

<TABLE border="1"
          summary="В этой таблице приводится некоторая статистика о фруктовых мухах:
                            средняя высота и вес, процент мух с красными глазами (особей мужского и женского пола).">
<CAPTION><EM>Тестовая таблица с объединенными ячейками</EM></CAPTION>
<TR><TH rowspan="2"><TH colspan="2">Средний
    <TH rowspan="2">Красные<BR>глаза
<TR><TH>высота<TH>вес
<TR><TH>мужской пол<TD>1.9<TD>0.003<TD>40%
<TR><TH>женский пол<TD>1.7<TD>0.002<TD>43%
</TABLE>

должно генерироваться на терминале примерно следующим образом:

          Тестовая таблица с объединенными ячейками
    /----------------------------------------------------------\
    |                            |      Средний      | Красные |
    |                            |-------------------| глаза   |
    |                            |  высота |  вес    |         |
    |----------------------------------------------------------|
    |  Мужской пол   | 1.9       | 0.003   |   40%   |         |
    |----------------------------------------------------------|
    | Женский пол    | 1.7       | 0.002   |   43%   |                      |
    \----------------------------------------------------------/

или следующим образом - графическими агентами пользователей:

Таблица с объединенными ячейками

11.2 Элементы построения таблиц

11.2.1 Элемент TABLE

<!ELEMENT TABLE - -
     (CAPTION?, (COL*|COLGROUP*), THEAD?, TFOOT?, TBODY+)>
<!ATTLIST TABLE                        -- таблица --
  %attrs;                              -- %coreattrs, %i18n, %events --
  summary     %Text;         #IMPLIED  -- цель/структура для речевого вывода --
  width       %Length;       #IMPLIED  -- ширина таблицы --
  border      %Pixels;       #IMPLIED  -- толщина рамки вокруг таблицы --
  frame       %TFrame;       #IMPLIED  -- какие части рамки нужно генерировать --
  rules       %TRules;       #IMPLIED  -- rulings между строками и столбцами --
  cellspacing %Length;       #IMPLIED  -- расстояние между ячейками --
  cellpadding %Length;       #IMPLIED  -- расстояние внутри ячеек --
  >

Начальный тег: обязателен, конечный тег: обязателен

Определения атрибутов

summary = текст [CS]
Краткая информация о назначении и структуре таблицы для агентов пользователей, выполняющих генерацию для невизуальных средств, таких как синтезаторы речи или азбуки Бройля.
align = left|center|right [CI]
Deprecated. Этот атрибут задает положение таблицы относительно документа. Допустимые значения:
  • left: Таблица находится в левой части документа.
  • center: Таблица находится в центре документа.
  • right: Таблицы находится в правой части документа.
width = длина [CN]
Этот атрибут определяет необходимую ширину всей таблицы и предназначен для визуальных объектов пользователей. Если значение указано в процентах, это означает долю в процентах от доступного горизонтального пространства. Если ширина не указана, она определяется агентом пользователя.

Атрибуты, определяемые в любом другом месте

  • id, class (идентификаторы в пределах документа)
  • lang (информация о языке), dir (направление текста)
  • title (заголовок элемента)
  • style (встроенная информация о стиле)
  • onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события)
  • bgcolor (цвет фона)
  • frame, rules, border (границы и rules)
  • cellspacing, cellpadding (поля в ячейках)

Элемент TABLE содержит все другие элементы, определяющие заголовок, строки, содержимое и форматирование.

В следующем списке описано, какие операции может выполнять агент пользователя при генерации таблиц:

  • Предоставление пользователю информации о таблице. Авторам следует предоставлять краткую информацию о содержании и структуре таблицы, чтобы люди, работающие с невизуальными агентами пользователей, могли лучше понять ее.
  • Генерация caption, если он определен.
  • Генерация верхнего заголовка таблицы, если он определен. Генерация нижнего заголовка, если он определен. Агенты пользователей должны знать, где нужно генерировать верхний и нижний заголовки. Например, если средство вывода делится на страницы, агенты пользователей могут помещать верхний заголовок в верхней части каждой страницы, а нижний - внизу. Точно так же, если агент пользователя предоставляет механизм прокрутки строк, верхний заголовок может отображаться вверху прокручиваемой области, а нижний - внизу.
  • Вычисление числа столбцов в таблице. Помните, что число строк в таблице равно числу элементов TR, содержащихся в элементе TABLE.
  • Группировка столбцов в соответствии со спецификациями групп столбцов.
  • Построчная генерация ячеек и группировка в столбцы между верхним и нижним заголовками. Визуальные агенты пользователей должны форматировать таблицы в соответствии с атрибутами HTML и спецификациями таблиц стилей.

Модель таблиц HTML разработана так, чтобы с помощью автора агенты пользователей могли генерировать таблицы последовательно (т.е. по мере получения строк таблицы), а не ждали получения всей таблицы до начала генерации.

Чтобы агенты пользователей могли форматировать таблицу за один проход, авторы должны сообщить агентам пользователей следующую информацию:

  • Число столбцов в таблице. Подробнее о том, как указать эту информацию, см. в разделе о подсчете числа столбцов в таблице.
  • Ширину столбцов. Подробнее о том, как указать эту информацию, см. в разделе о подсчете ширины столбцов.

Более точно агент пользователя может сгенерировать таблицу за один проход, когда ширина столбцов указана с использованием комбинации элементов COLGROUP и COL. Если для какого-либо столбца указана относительная ширина или ширина в процентах (см. раздел о подсчете ширины столбцов), авторы должны также указать ширину самой таблицы.

Направление таблиц

Направление таблицы либо наследуется (по умолчанию используется направление слева направо), либо определяется атрибутом dir элемента TABLE.

Для таблиц, направление которых слева направо, нулевой столбец находится слева, а нулевая строка - сверху. Для таблиц, направление которых справа налево, нулевой столбец находится справа, а нулевая строка - сверху.

Если агент пользователя allots в строку дополнительные ячейки (см. раздел о подсчете числа столбцов в таблице), дополнительные ячейки строки добавляются в таблицу справа для таблиц, имеющих направление слева направо, и слева для таблиц, имеющих направление справа налево.

Помните, что TABLE - единственный элемент, для которого атрибут dir обращает визуальный порядок столбцов; нельзя изменить порядок одной строки (TR) или группы столбцов (COLGROUP).

Если для элемента TABLE установлен атрибут dir, он также влияет на направление текста в ячейках таблицы (поскольку атрибут dir наследуется элементами уровня блока).

Чтобы определить таблицу с направлением справа налево, установите атрибут dir следующим образом:

<TABLE dir="RTL">
...продолжение таблицы...
</TABLE>

Направление текста в отдельных ячейках можно изменить, установив атрибут dir для элемента, определяющего ячейку. Подробнее о вопросах направления текста см. в разделе о двунаправленном тексте.

11.2.2 Captions таблиц: элемент CAPTION

<!ELEMENT CAPTION  - - (%inline;)*     -- caption таблицы -->
<!ENTITY % CAlign "(top|bottom|left|right)">

<!ATTLIST CAPTION
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

Начальный тег: обязателен, конечный тег: обязателен

Определения атрибутов

align = top|bottom|left|right [CI]
Нежелателен. Для визуальных агентов пользователей этот атрибут указывает положение caption относительно таблицы. Возможные значения:
  • top: caption находится наверху таблицы. Это значение используется по умолчанию.
  • bottom: caption находится внизу таблицы.
  • left: caption находится слева от таблицы.
  • right: caption находится справа от таблицы.

Атрибуты, определяемые в любом другом месте

  • id, class (идентификаторы в пределах документа)
  • lang (информация о языке), dir (направление текста)
  • title (заголовок элемента)
  • style (встроенная информация о стиле)
  • onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события)

Если элемент CAPTION присутствует, его текст должен описывать предмет таблицы. Элемент CAPTION может располагаться только непосредственно после начального тега TABLE. Элемент TABLE может включать только один элемент CAPTION.

Визуальные агенты пользователей позволяют sighted people быстро grasp структуру таблицы из заголовков и caption. Последствием этого является то, что captions не будут совпадать с краткими описаниями назначения и структуры таблицы с точки зрения людей, использующих невизуальные агенты.

Таким образом, авторы должны позаботиться о предоставлении дополнительной информации, описывающей назначение и структуру таблицы с помощью атрибута summary элемента TABLE. Это особенно важно для таблиц, не имеющих captions. На примерах ниже показано использование атрибута summary.

Визуальные агенты пользователей должны избегать clipping любой части таблицы, включая caption, если не предоставлено средство доступа ко всем частям, например, с помощью горизонтальной или вертикальной прокрутки. Мы рекомендуем, чтобы текст caption разбивался так, чтобы иметь ту же ширину, что и таблица. (См. также раздел о рекомендуемых алгоритмах компоновки.)

11.2.3 Группы строк: элементы THEAD, TFOOT и TBODY

<!ELEMENT THEAD    - O (TR)+           -- заголовок таблицы -->
<!ELEMENT TFOOT    - O (TR)+           -- нижний заголовок таблицы -->

Начальный тег: обязателен, конечный тег: необязателен

<!ELEMENT TBODY    O O (TR)+           -- тело таблицы -->

Начальный тег: необязателен, конечный тег: необязателен

<!ATTLIST (THEAD|TBODY|TFOOT)          -- раздел таблицы --
  %attrs;                              -- %coreattrs, %i18n, %events --
  %cellhalign;                         -- горизонтальное выравнивание в ячейках --
  %cellvalign;                         -- вертикальное выравнивание в ячейках --
  >

Атрибуты, определяемые в любом другом месте

  • id, class (идентификаторы в пределах документа)
  • lang (информация о языке), dir (направление текста)
  • title (заголовок элемента)
  • style (встроенная информация о стиле)
  • onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события)
  • align, char, charoff, valign (выравнивание ячейки)

Строки таблицы могут группироваться в заголовки, нижние заголовки и один или несколько разделов тела таблицы с помощью элементов THEAD, TFOOT и TBODY соответственно. Это подразделение позволяет агентам пользователей поддерживать прокрутку тела таблицы независимо от заголовков. При печати длинных таблиц информация из заголовков может повторяться на каждой странице, на которой имеются данные таблицы.

Заголовки таблицы должны содержать информацию о столбцах таблицы. Тело таблицы должно содержать строки данных таблицы.

Если элементы THEAD, TFOOT и TBODY присутствуют, каждый из них содержит группу строк. Каждая группа строк должна содержать по крайней мере одну строку, определяемую элементом TR.

В этом примере показан порядок и структура заголовков таблицы, нижних заголовков и тел.

<TABLE>
<THEAD>
     <TR> ...заголовок...
</THEAD>
<TFOOT>
     <TR> ...нижний заголовок...
</TFOOT>
<TBODY>
     <TR> ...первая строка данных блока 1...
     <TR> ...вторая строка данных блока 1...
</TBODY>
<TBODY>
     <TR> ...первая строка данных блока 2...
     <TR> ...вторая строка данных блока 2...
     <TR> ...третья строка данных блока 2...
</TBODY>
</TABLE>

Элемент TFOOT должен располагаться до элемента TBODY в определении TABLE, чтобы агенты пользователей могли генерировать нижний заголовок до получения всех (возможно, многочисленных) строк данных. Ниже приводится сводка обязательных тегов и тегов, которые можно опустить:

  • Начальный тег TBODY всегда обязателен, если только таблица не содержит единственного тела без верхних и нижних заголовков. Конечный тег TBODY всегда можно опускать.
  • Начальные теги для элементов THEAD и TFOOT обязательны, если в таблице присутствуют верхний и нижний заголовки, но соответствующие конечные теги можно опускать.

Соответствующий спецификации агент пользователя при разборе должен obey эти правила из соображений совместимости с предыдущими версиями.

Таблицу из предыдущего примера можно сократить, удалив конечные теги, как показано ниже:

<TABLE>
<THEAD>
     <TR> ...верхний заголовок...
<TFOOT>
     <TR> ...нижний заголовок...
<TBODY>
     <TR> ...первая строка данных блока 1...
     <TR> ...вторая строка данных блока 1...
<TBODY>
     <TR> ...первая строка данных блока 2...
     <TR> ...вторая строка данных блока 2...
     <TR> ...третья строка данных блока 2...
</TABLE>

Разделы THEAD, TFOOT и TBODYдолжны содержать одинаковое число столбцов.

11.2.4 Группы столбцов: элементы COLGROUP и COL

Группы столбцов позволяют создавать структурные подразделения внутри таблицы. Авторы могут выделять такую структуру с помощью таблиц стилей или атрибутов HTML (например, атрибут rules для элемента TABLE). Пример визуального представления группы столбцов см. в примере таблицы.

Таблица может содержать одну неявную группу столбцов (элемент COLGROUP не разделяет столбцы) или любое число явных групп столбцов (каждая из которых отделяется одним экземпляром элемента COLGROUP).

Элемент COL позволяет авторам использовать одни и те же атрибуты в различных столбцах, не используя структурной группировки. "span" элемента COL - это число столбцов, использующих атрибуты этого элемента.

Элемент COLGROUP

<!ELEMENT COLGROUP - O (col)*          -- группа столбцов таблицы -->
<!ATTLIST COLGROUP
  %attrs;                              -- %coreattrs, %i18n, %events --  span        NUMBER         1         -- число столбцов в группе, используемое по умолчанию --  width       %MultiLength;  #IMPLIED  -- ширина для вложенных элементов COL, используемая по умолчанию --  %cellhalign;                         -- горизонтальное выравнивание в ячейках --  %cellvalign;                         -- вертикальное выравнивание в ячейках --  >

Начальный тег: обязателен, Конечный тег: необязателен

Определения атрибутов

span = число [CN]
Этот атрибут, значением которого должно быть целое число больше нуля, определяет число столбцов в группе. Значения означают следующее:
  • При отсутствии атрибута span каждый элемент COLGROUP определяет группу столбцов, состоящую из одного столбца.
  • Если для атрибута span установлено значение N > 0, текущий элемент COLGROUP определяет группу, содержащую N столбцов.

Агенты пользователей должны игнорировать этот атрибут, если элемент COLGROUP содержит один или несколько элементов COL.

width = multi-length [CN]

Этот атрибут определяет ширину каждого столбца в текущей группе, используемую по умолчанию. Кроме стандартных значений в пикселах, процентах и относительных значений, в этом атрибуте может использоваться специальная форма "0*" (ноль со звездочкой), которая означает, что ширина каждого столбца в группе должна быть минимальной, необходимой для размещения содержимого столбца. Подразумевается, что содержимое столбца известно до того, как можно будет корректно вычислить его ширину. Авторы должны знать, что использование "0*" не позволит агентам пользователей генерировать таблицу последовательно.

Этот атрибут переопределяется для любого столбца из группы, для которого значение атрибута width задано в элементе COL.

Атрибуты, определяемые в любом другом месте

  • id, class (идентификаторы в пределах документа)
  • lang (информация о языке), dir (направление текста)
  • title (заголовок элемента)
  • style (встроенная информация о стиле)
  • onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress,onkeydown, onkeyup (внутренние события)
  • align, char, charoff, valign (выравнивание ячейки)

Элемент COLGROUP создает явную группу столбцов. Число столбцов в группе может быть указано двумя взаимоисключающими способами:

  1. Атрибут span элемента (значение по умолчанию - 1) задает число столбцов в группе.
  2. Каждый элемент COL в COLGROUP представляет один или несколько столбцов в группе.

Преимуществом использования атрибута span является то, что авторы могут группировать информацию о ширине столбцов. Таким образом, если в таблице содержится сорок столбцов, каждый из которых имеет ширину 20 пикселов, проще написать:

   <COLGROUP span="40" width="20">
   </COLGROUP>

чем:

   <COLGROUP>
      <COL width="20">
      <COL width="20">
      ...все сорок элементов COL...
   </COLGROUP>

Если необходимо выделить столбец (например, для информации о стиле, для указания информации о ширине и т.д.) в группе, авторы должны определить этот столбец с помощью элемента COL. Таким образом, чтобы применить специальную информацию о стиле к последнему столбцу предыдущей таблице, мы выделяем его следующим образом:

   <COLGROUP width="20">
      <COL span="39">
      <COL id="format-me-specially">
   </COLGROUP>

Атрибут width элемента COLGROUP наследуют все сорок столбцов. Первый элемент COL относится к первым 39 столбцам (ничего особенного для них не делая), а второй назначает значение idсороковому столбцу, так что на него можно будет ссылаться в таблицах стилей.

Таблица в следующем примере содержит две группы столбцов. Первая группа включает 10 столбов, вторая - 5. Ширина по умолчанию для каждого столбца в первой группе - 50 пикселов. Ширина каждого столбца во второй группе - минимальная, необходимая для этого столбца.

<TABLE>
<COLGROUP span="10" width="50">
<COLGROUP span="5" width="0*">
<THEAD>
<TR><TD> ...
</TABLE>

Элемент COL

<!ELEMENT COL      - O EMPTY           -- столбец таблицы -->
<!ATTLIST COL                          -- группы и свойства столбцов --  %attrs;                              -- %coreattrs, %i18n, %events --  span        NUMBER         1         -- атрибут COL влияет на N столбцов --  width       %MultiLength;  #IMPLIED  -- ширина столбца --  %cellhalign;                         -- горизонтальное выравнивание в ячейках --  %cellvalign;                         -- вертикальное выравнивание в ячейках --  >

Начальный тег: обязателен, Конечный тег: запрещен

Определения атрибутов

span = число [CN]
Этот атрибут, значением которого должно быть целое число больше нуля, определяет число столбцов, "spanned" элементом COL; атрибуты элемента COL распространяются на все столбцы, которые он spans. Значение по умолчанию для этого атрибута - 1 (т.е. элемент COL означает один столбец). Если для атрибута span установлено значение N > 1, атрибуты текущего элемента COL распространяются на следующие N-1 столбец.
width = multi-length [CN]
Этот атрибут определяет ширину каждого столбца, spanned текущим элементом COL, используемую по умолчанию. Он имеет то же значение, что и атрибут width для элемента COLGROUP и имеет над ним приоритет.

Атрибуты, определяемые в любом другом месте

  • id, class (идентификаторы в пределах документа)
  • lang (информация о языке), dir (направление текста)
  • title (заголовок элемента)
  • style (встроенная информация о стиле)
  • onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события)
  • align, char, charoff, valign (выравнивание в ячейках)

Элемент COL позволяет авторам группировать определения атрибутов для столбцов таблицы. Атрибут COL не группирует столбцы структурно - эту роль играет элемент COLGROUP. Элементы COL являются пустыми и служат только для поддержания атрибутов. Они могут находиться внутри или вне явной группы столбцов (т.е. элемента COLGROUP).

Атрибут width для элемента COL означает ширину каждого столбца в span элемента.

Подсчет числа столбцов в таблице

Имеется два способа определения числа столбцов в таблице (в порядке старшинства):

  1. Если элемент TABLE включает элементы COLGROUP или COL, агенты пользователей должны подсчитывать число столбцов, суммируя следующие цифры:
    • Для каждого элемента COL - значение его атрибута span (по умолчанию 1).
    • Для каждого элемента COLGROUP, содержащего по крайней мере один элемент COL - игнорировать атрибут span для элемента COLGROUP. Для каждого элемента COL выполнить вычисление из шага 1.
    • Для каждого пустого элемента COLGROUP - значение его атрибута span (по умолчанию 1).
  2. В противном случае, если элемент TABLE не содержит элементов COLGROUP или COL, агенты пользователей определять число столбцов из того, что необходимо для строк. Число столбцов равно число столбцов, необходимых строке с наибольшим числом столбцов, включая ячейки, span несколько столбцов. Для любой строки, число столбцов в которой меньше, конец этой строки будет дополняться пустыми ячейками. "Конец" строки зависит от направления таблицы.

Если таблица содержит элементы COLGROUP или COL, и эти два способа подсчет дают разные результаты, это является ошибкой.

Когда агент пользователя подсчитал число столбцов в таблице, он может сгруппировать их в группы столбцов.

Например, для каждой из следующих таблиц, оба способа подсчета числа столбцов должны дать три столбца. Первые три таблицы могут генерироваться последовательно.

<TABLE>
<COLGROUP span="3"></COLGROUP>
<TR><TD> ...
...строки...
</TABLE>

<TABLE>
<COLGROUP>
<COL>
<COL span="2">
</COLGROUP>
<TR><TD> ...
...строки...
</TABLE>

<TABLE>
<COLGROUP>
<COL>
</COLGROUP>
<COLGROUP span="2">
<TR><TD> ...
...строки...
</TABLE>

<TABLE>
<TR>
  <TD><TD><TD>
</TR>
</TABLE>

Подсчет ширины столбцов

Авторы могут указывать ширину столбцов тремя способами:

Фиксированная
Указание фиксированной ширины дается в пикселах (например, width="30"). Использование фиксированной ширины позволяет использовать последовательную генерацию.
В процентах
Указание ширины в процентах (например, width="20%") означает процент горизонтального пространства, доступного для таблицы (между текущим левым и правым полями, включая floats). Помните, что это пространство не зависит от самой таблицы, поэтому указание ширины в процентах позволяет использовать последовательную генерацию.
Пропорциональная
Указание пропорциональной ширины (например, width="3*") означает число частей горизонтального пространства, необходимого для таблицы. Если ширина таблицы определяется как фиксированное значение (с помощью атрибута width элемента TABLE), агенты пользователей могут генерировать таблицу последовательно и с указанием пропорциональной ширины.

Однако если ширина таблицы не фиксирована, агенты пользователей должны получить все данные таблицы перед тем, как они смогут определить горизонтальное пространство, необходимое для таблицы. Только тогда это пространство может быть распределено между столбцами, для которых указана пропорциональная ширина.

Если автор не указывает для столбца информацию о ширине, агент пользователя не сможет форматировать таблицу последовательно, поскольку он вынужден будет ждать получения всех данных столбца для определения его ширины.

Если указанная для столбца ширина недостаточна для размещения содержимого какой-либо ячейки, агенты пользователей могут переформатировать таблицу.

Таблица в этом примере содержит шесть столбцов. Первый не принадлежит к явной группе столбцов. Следующие три образуют первую явную группу столбцов, а последние два - вторую явную группу столбцов. Эту таблицу нельзя отформатировать последовательно, поскольку она содержит столбцы пропорциональной ширины, а значение атрибута width для элемента TABLE не указано.

Когда агент пользователя (визуальный) получит данные таблицы, доступное горизонтальное пространство будет распределяться агентом пользователя следующим образом: сначала агент пользователя распределит 30 пикселов на первый и второй столбец. Затем будет зарезервировано минимальное пространство, необходимое для третьего столбца. Оставшееся горизонтальное пространство будет разделено на шесть равных частей (поскольку 2* + 1* + 3* = 6 частей). Четвертый столбец (2*) получит две таких части, пятый (1*) - одну, а шестой - (3*) три.

<TABLE>
<COLGROUP>
   <COL width="30">
<COLGROUP>
   <COL width="30">
   <COL width="0*">
   <COL width="2*">
<COLGROUP align="center">
   <COL width="1*">
   <COL width="3*" align="char" char=":">
<THEAD>
<TR><TD> ...
...строки...
</TABLE>

Для атрибута align во второй группе столбцов мы установили значение "center". Все ячейки в каждом столбце этой группы будут наследовать это значение, но могут переопределять его. В действительности последний элемент COL делает именно это, потому что в нем указано, что каждая ячейка столбца, которым он управляет, будет выровнена с использованием символа ":".

В следующей таблице спецификации ширины столбца позволяют агентам пользователя форматировать таблицу последовательно:

<TABLE width="200">
<COLGROUP span="10" width="15">
<COLGROUP width="*">
   <COL id="penultimate-column">
   <COL id="last-column">
<THEAD>
<TR><TD> ...
...строки...
</TABLE>

Первые десять столбцов имеют ширину 15 пикселов каждый. Последние два столбца получают по половине из оставшихся 50 пикселов. Помните, что элемент COL расположен так, что значение id можно указать только для последних двух столбцов.

Примечание. Хотя атрибут width элемента TABLE не является нежелательным, авторам рекомендуется использовать для указания ширины таблицы стилей.

11.2.5 Строки таблицы: элемент TR

<!ELEMENT TR       - O (TH|TD)+        -- строка таблицы -->
<!ATTLIST TR                           -- строка таблицы --  %attrs;                              -- %coreattrs, %i18n, %events --  %cellhalign;                         -- горизонтальное выравнивание в ячейках --  %cellvalign;                         -- вертикальное выравнивание в ячейках --  >

Начальный тег: обязателен, Конечный тег: не обязателен

Атрибуты, определяемые в любом другом месте

  • id, class (идентификаторы в пределах документа)
  • lang (информация о языке), dir (направление текста)
  • title (заголовок элемента)
  • style (встроенная информация о стиле )
  • onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown,onkeyup (внутренние события)
  • align, char, charoff, valign (выравнивание в ячейках)

Элементы TR служат контейнерами для строки ячеек таблицы. Конечный тег можно опустить.

Эта простая таблица состоит из трех строк, каждая из которых начинается с элемента TR:

<TABLE summary="В этой таблице показан график числа
                   чашек кофе, выпиваемых каждым сенатором, тип
                   кофе (без кофеина или обычный) и наличие сахара.">
<CAPTION>Сколько чашек кофе выпивает каждый сенатор</CAPTION>
<TR> ...Строка заголовка...
<TR> ...Первая строка данных...
<TR> ...Вторая строка данных...
...продолжение таблицы...
</TABLE>

11.2.6 Ячейки таблицы: элементы TH и TD

<!ELEMENT (TH|TD)  - O (%flow;)*       -- ячейка заголовка таблицы, ячейка данных таблицы -->

<!-Для большинства таблиц атрибут scope проще, чем атрибут axes -->
<!ENTITY % Scope "(row|col|rowgroup|colgroup)">

<!-- TH используется для заголовков, TD - для данных, но для ячеек, служащих и тем, и другим используйте TD -->
<!ATTLIST (TH|TD)                      -- заголовок ячейки данных --  %attrs;                              -- %coreattrs, %i18n, %events --  abbr        %Text;         #IMPLIED  -- сокращение для ячейки заголовка --  axis        CDATA          #IMPLIED  -- группы имен связанных заголовков --  headers     IDREFS         #IMPLIED  -- список id для ячеек заголовков --  scope       %Scope;        #IMPLIED  -- область ячеек заголовков --  rowspan     NUMBER         1         -- число строк, spanned ячейкой --  colspan     NUMBER         1         -- число столбцов, spanned ячейкой --  %cellhalign;                         -- горизонтальное выравнивание в ячейках --  %cellvalign;                         -- вертикальное выравнивание в ячейках --
  >

Начальный тег: обязателен, Конечный тег: не обязателен

Определения атрибутов

headers = idrefs [CS]
В этом атрибуте указывается список ячеек заголовков, предоставляющих заголовочную информацию для текущей ячейки данных. Значением этого атрибута является разделенный пробелами список названий ячеек; имена ячейкам должны даваться с помощью атрибута id. Авторы обычно используют атрибут headers с целью помочь невизуальным агентам пользователей в генерации заголовков ячеек данных (например, заголовок произносится перед прочтением данных ячейки), но этот атрибут может также использоваться вместе с таблицами стилей. См. также атрибут scope.
scope = имя области действия [CI]
Этот атрибут определяет набор ячеек данных, для которых заголовочная информация задается текущим заголовком. Этот атрибут может использоваться вместо атрибута a href="tables.html#adef-headers" class="noxref">headers, особенно в простых таблицах. Если этот атрибут используется, он должен иметь одно из следующих значений:
  • row: В ячейке представлена заголовочная информация для оставшейся части строки, в которой содержится эта ячейка (см. также раздел о направлении таблиц).
  • col: В текущей ячейке представлена заголовочная информация для оставшейся части столбца, в котором содержится эта ячейка.
  • rowgroup: В ячейке представлена заголовочная информация для оставшейся группы строк, в которой содержится эта ячейка.
  • colgroup: В ячейке представлена заголовочная информация для оставшейся группы столбцов, в которой содержится эта ячейка.
abbr = текст [CS]
Этот атрибут следует использовать для представления сокращенной формы содержимого ячейки; он может генерироваться агентами пользователей в подходящий момент вместо содержимого ячейки. Сокращенные имена должны быть короче, и агенты пользователей могут повторять их. Например, синтезаторы речи могут генерировать сокращенные заголовки, относящиеся к определенной ячейке, перед генерацией содержимого ячейки.
axis = cdata [CI]
Этот атрибут может использоваться вместо ячейки в концептуальных категориях, которая может использоваться для формирования axes в n-мерном пространстве. Агенты пользователей могут давать пользователям доступ к этим категориям (например, пользователь может запрашивать у агента все ячейки, принадлежащие к определенной категории, агент пользователя может представлять таблицу в форме оглавления и т.д.). Подробнее см. в разделе о категоризации ячеек. Значением этого атрибута является список имен категорий, разделенных запятыми.
rowspan = число [CN]
Этот атрибут определяет число строк, spanned текущей ячейкой. По умолчанию используется значение один ("1"). Значение ноль ("0") означает, что ячейка spans все строки от текущей до последней строки таблицы.
colspan = число [CN]
Этот атрибут определяет число столбцов, spanned текущей ячейкой. По умолчанию используется значение один ("1"). Значение ноль ("0") означает, что ячейка spans все столбцы от текущего до последнего столбца таблицы.
nowrap [CI]
Нежелателен. Если этот логический атрибут используется, он сообщает визуальным агентам пользователей о необходимости отключить автоматическое разбиение текста для этой ячейки. Для разбиения строк вместо этого атрибута должны использоваться таблицы стилей. Примечание. при невнимательном использовании этот атрибут может привести к тому, что ячейки будут очень широкими.
width = пикселы [CN]
Нежелателен. Этот атрибут дает агентам пользователей рекомендуемую ширину ячейки.
height = пикселы [CN]
Нежелателен. Этот атрибут дает агентам пользователей рекомендуемую высоту ячейки.

Атрибуты, определяемые в любом другом месте

  • id, class (идентификаторы в пределах документа)
  • lang (информация о языке), dir (направление текста)
  • title (заголовок элемента)
  • style (встроенная информация о стиле )
  • onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события)
  • bgcolor (цвет фона)
  • align, char, charoff, valign (выравнивание в ячейках)

Ячейки таблицы могут содержать информацию двух типов: заголовочную информацию и данные. Это различие позволяет агентам пользователей генерировать ячейки заголовков и данных различным образом даже при отсутствии таблиц стилей. Например, визуальные агенты пользователей могут представлять текст ячеек заголовков жирным шрифтом. Синтезаторы речи могут выделять заголовочную информацию голосом.

Элемент TH определяет ячейку, содержащую информацию заголовка. Агентам пользователей доступны две части заголовочной информации: содержимое элемента TH и значение атрибута abbr. Агенты пользователей должны генерировать содержимое ячейки или значение атрибута abbr. Для визуальных устройств последнее может иметь смысл, если пространства для генерации полного содержимого ячейки недостаточно. Для невизуальных устройств abbr может использоваться в качестве сокращения для заголовков таблиц, когда они генерируются вместе с содержимым ячеек, к которым они относятся.

Атрибуты headers и scope также позволяют авторам помочь невизуальным агентам пользователей в обработке информации заголовка. Подробную информацию и примеры см. в разделе о пометке ячеек для невизуальных агентов пользователей.

Элемент TD определяет ячейку, содержащую данные.

Ячейка может быть пустой (т.е. не содержать данных).

Например, в следующей таблице содержится четыре столбца данных, каждый столбец имеет заголовок.

<TABLE summary="В этой таблице показан график числа
                   чашек кофе, выпиваемых каждым сенатором, тип
                   кофе (без кофеина или обычный) и наличие сахара.">
<CAPTION>Сколько чашек кофе выпивает каждый сенатор</CAPTION>
<TR>
   <TH>Имя</TH>
   <TH>Число чашек</TH>
   <TH>Тип кофе</TH>
   <TH>Сахар?</TH>
<TR>
   <TD>Т. Секстон</TD>
   <TD>10</TD>
   <TD>Эспрессо</TD>
   <TD>Нет</TD>
<TR>
   <TD>Дж. Диннен</TD>
   <TD>5</TD>
   <TD>Без кофеина</TD>
   <TD>Да</TD>
</TABLE>

Агент пользователя, выполняющий генерацию для терминала, может отобразить это следующим образом:

Имя                 Число чашек            Тип кофе                     Сахар?
Т. Секстон    10         Эспрессо         Нет
Дж. Диннен    5          Без кофеина       Да

Ячейки, span несколько строк или столбцов

Ячейки могут span несколько строк или столбцов. Число строк или столбцов, spanned ячейкой, устанавливается с помощью атрибутов rowspan и colspan элементов TH и TD.

В этом определении таблицы мы указываем, что ячейка в четвертой строке во втором столбце span все три столбца, включая текущий.

<TABLE border="1">
<CAPTION> Сколько чашек кофе выпивает каждый сенатор </CAPTION>
<TR><TH>Имя<TH>Число чашек<TH>Тип кофе<TH>Сахар?
<TR><TD>Т. Секстон<TD>10<TD>Эспрессо<TD>Нет
<TR><TD>Дж. Диннен<TD>5<TD>Без кофеина<TD>Да
<TR><TD>А. Сориа<TD colspan="3"><em>Нет данных</em>
</TABLE>

На терминале эта таблица может генерироваться следующим образом:

Сколько чашек кофе выпивает каждый сенатор
 ----------------------------------------------
 |   Имя    |Число чашек|Тип кофе      |Сахар?|
 ----------------------------------------------
 |Т. Секстон|10         |Эспрессо      |Нет   |
 ----------------------------------------------
 |Дж. Диннен|5          |Без кофеина   |Да    |
 ----------------------------------------------
 |А. Сориа  |Нет данных                       |
 ----------------------------------------------

В следующем примере показано (с помощью границ таблицы), как определения ячеек, span несколько строк или столбцов, влияют на определения следующих ячеек. Рассмотрите следующее определение таблицы:

<TABLE border="1">
<TR><TD>1 <TD rowspan="2">2 <TD>3
<TR><TD>4 <TD>6
<TR><TD>7 <TD>8 <TD>9
</TABLE>

Поскольку ячейка "2" spans первую и вторую строки, определение второй строки будет принято во внимание. Таким образом, второй элемент TD в строке два в действительности определяет третью ячейку строки. Визуально на терминале таблица может генерироваться следующим образом:

-------------
| 1 | 2 | 3 |
----|   |----
| 4 |   | 6 |
----|---|----
| 7 | 8 | 9 |
-------------

а графический агент пользователя может представить ее так:

Таблица с rowspan=2

Помните, что, если элемент TD, определяющий ячейку "6", опущен, агенты пользователя будут добавлять дополнительную пустую ячейку, чтобы заполнить строку.

Точно так же в следующем определении таблицы:

<TABLE border="1">
<TR><TD>1 <TD>2 <TD>3
<TR><TD colspan="2">4 <TD>6
<TR><TD>7 <TD>8 <TD>9
</TABLE>

ячейка "4" spans два столбца, так что второй элемент TD в строке на самом деле определяет третью ячейку ("6"):

-------------
| 1 | 2 | 3 |
--------|----
| 4     | 6 |
--------|----
| 7 | 8 | 9 |
-------------

Графический агент пользователя может представить это следующим образом:

Таблица с colspan=2

Определение перекрывающихся ячеек является ошибкой. Агенты пользователей могут по-разному обрабатывать эту ошибку (например, они могут по-разному генерировать такие таблицы).

В следующем примере недопустимого использования показано, как можно создать перекрывающиеся ячейки. В этой таблице ячейка "5" spans две строки, а ячейка "7" spans два столбца, так что они обе используют ячейку между "7" и "9":

<TABLE border="1">
<TR><TD>1 <TD>2 <TD>3
<TR><TD>4 <TD rowspan="2">5 <TD>6
<TR><TD colspan="2">7 <TD>9
</TABLE>

11.3 Форматирование таблиц визуальными агентами пользователей

Примечание. В следующих разделах описываются атрибуты таблиц HTML, относящиеся к визуальному форматированию. Хотя таблицы стилей предлагают лучшие возможности управления визуальным форматированием таблиц, во время написания этой спецификации в [CSS1] не было механизмов для управления всеми аспектами визуального форматирования таблиц.

В HTML 4.0 имеются механизмы для управления:

  • стилями границ
  • горизонтальным и вертикальным выравниванием содержимого ячеек
  • и полями ячейки

11.3.1 Границы и rules

Следующие атрибуты влияют на внутренние кадры и внутренние rules таблицы.

Определения атрибутов

frame = void|above|below|hsides|lhs|rhs|vsides|box|border [CI]
Этот атрибут указывает, какие стороны кадра, окружающего таблицу, будут видимы. Возможные значения:
  • void: Сторон нет. Это значение используется по умолчанию.
  • above: Только верхняя часть.
  • below: Только нижняя часть.
  • hsides: Только верхняя и нижняя часть.
  • vsides: Только левая и правая части.
  • lhs: Только левая часть.
  • rhs: Только права часть.
  • box: Все четыре части.
  • border: Все четыре части.
rules = none|groups|rows|cols|all [CI]
Этот атрибут указывает, какие rules будут отображаться между ячейками. Генерация rules зависит от агента пользователя. Возможные значения:
  • none: Нет rules. Это значение используется по умолчанию.
  • groups: Rules отображаются только между группами строк (см. THEAD, TFOOT, and TBODY) и группами столбцов (см. COLGROUP and COL).
  • rows: Rules отображаются только между строками.
  • cols: Rules отображаются только между столбцами.
  • all: Rules отображаются между строками и столбцами.
border = пикселы [CN]
Этот атрибут задает ширину (только в пикселах) кадра вокруг таблицы (подробнее об этом атрибуте см. в Примечании ниже).

Для простоты различия ячеек в таблице мы можем устанавливать атрибут border элемента TABLE. Рассмотрим предыдущий пример:

<TABLE border="1"
       summary="В этой таблице приведены данные
                о числе чашек кофе, потребляемом каждым
                сенатором, типе кофе (без кофеина или обычный)
                и наличии сахара.">
<CAPTION>Сколько чашек кофе выпивает каждый сенатор</CAPTION>
<TR>
   <TH>Имя</TH>
   <TH>Число чашек</TH>
   <TH>Тип кофе</TH>
   <TH>Сахар?</TH>
<TR>
   <TD>Т. Секстон</TD>
   <TD>10</TD>
   <TD>Эспрессо</TD>
   <TD>Нет</TD>
<TR>
   <TD>Дж. Диннен</TD>
   <TD>5</TD>
   <TD>Без кофеина</TD>
   <TD>Да</TD>
</TABLE>

В следующем примере агент пользователя должен отобразить границу шириной в пять пикселов слева и справа от таблицы и rules между столбцами.

<TABLE border="5" frame="vsides" rules="cols">
<TR> <TD>1 <TD>2 <TD>3
<TR> <TD>4 <TD>5 <TD>6
<TR> <TD>7 <TD>8 <TD>9
</TABLE>

Следующие настройки должны рассматриваться агентами пользователей для обеспечения совместимости с предыдущими версиями.

  • Настройка border="0" подразумевает frame="void" и, если не указано другое, rules="none".
  • Другие значения border предполагают frame="border" и, если не указано другое, rules="all".
  • Значение "border" в начальном теге элемента TABLE должно интерпретироваться как значение атрибута frame. Предполагается, что rules="all" и используется некоторое стандартное значение (не нулевое) для атрибута border.

Например, следующие определения эквивалентны:

<TABLE border="2">
<TABLE border="2" frame="border" rules="all">

следующим:

<TABLE border>
<TABLE frame="border" rules="all">

Примечание. Атрибут border также определяет отображение границы для элементов OBJECT и IMG, но принимает для этих элементов различные значения.

11.3.2 Горизонтальное и вертикальное выравнивание

Для различных элементов таблицы можно установить следующие атрибуты (см. их определения).

<!- атрибуты горизонтального выравнивания содержимого ячейки -->
<!ENTITY % cellhalign  "align      (left|center|right|justify|char) #IMPLIED   char       %Character;    #IMPLIED  -- символы выравнивания, например char=':' --   charoff    %Length;       #IMPLIED  -- отступ символа выравнивания --"  ><!-атрибуты вертикального выравнивания содержимого ячейки --><!ENTITY % cellvalign  "valign     (top|middle|bottom|baseline) #IMPLIED"  >

Определения атрибутов

align = left|center|right|justify|char [CI]
Этот атрибут задает выравнивание данных и выключку текста в ячейке. Возможные значения:
  • left: Выравнивание данных по левому краю/выключка текста влево. Это значение используется по умолчанию.
  • center: Выравнивание данных по центру/выключка текста по центру. Это значение используется по умолчанию в заголовках таблиц.
  • right: Выравнивание данных по правому краю/выключка текста вправо.
  • justify: Выключка по обоим краям.
  • char:Выравнивание текста вокруг указанного символа.
valign = top|middle|bottom|baseline [CI]
Этот атрибут задает вертикальное положение данных в ячейке. Возможные значения:
  • top: Данные ячейки сдвигаются вверх.
  • middle: Данные ячейки центрируются вертикально. Это значение используется по умолчанию.
  • bottom: Данные в ячейке сдвигаются вниз.
  • baseline: Во всех ячейках строки, в которой находится ячейка, для которой установлен атрибут valign, текст должен располагаться так, чтобы первая строка оказывалась на базовой линии, общей для всех ячеек в строке. Это ограничение не применяется к последующим текстовым строкам в этой ячейке.
char = символ [CN]
Этот атрибут определяет отдельный символ во фрагменте текста, служащий осью для выравнивания. По умолчанию в качестве значения этого атрибута используется символ десятичной точки для текущего языка, установленного в соответствии с атрибутом lang (например, точка (".") в английском языке и запятая (",") во французском). Агенты пользователя не обязательно должны поддерживать этот атрибут.
charoff = длина [CN]
Если этот атрибут задан, он определяет отступ первого экземпляра символа выравнивания в каждой строке. Если в строек нет символа выравнивания, она горизонтально сдвигается до конца в позиции выравнивания.

Если для установления смещения символа выравнивания используется атрибут charoff, направление смещения определяется текущим направлением текста (устанавливаемым атрибутом dir). В текста, направленных слева направо (по умолчанию), смещение производится от левого поля. В текстах, направленных справа налево, смещение производится от правого поля. Агенты пользователей не обязательно должны поддерживать этот атрибут.

В этом примере денежные единицы выровнены по десятичной точке. Мы явно установили выравнивание по символу ".".

<TABLE border="1">
<COLGROUP>
<COL><COL align="char" char=".">
<THEAD>
<TR><TH>Овощи <TH>Цена за кг
<TBODY>
<TR><TD>Lettuce        <TD>$1
<TR><TD>Silver carrots <TD>$10.50
<TR><TD>Golden turnips <TD>$100.30
</TABLE>

Отформатированная таблица может выглядеть следующим образом:

------------------------------
|   Овощи      |Цена за кг   |
|--------------|-------------|
|Lettuce       |        $1   |
|--------------|-------------|
|Silver carrots|       $10.50|
|--------------|-------------|
|Golden turnips|      $100.30|
------------------------------

Если в ячейке содержится несколько экземпляров символов выравнивания, заданных в атрибуте char, и содержимое ячейки переносится на другую строку, поведение агента пользователя не определено. Поэтому авторы должны внимательно использовать атрибут char.

Примечание. Визуальные агенты пользователей обычно генерируют элементы TH выровненными вертикально и горизонтально по центру с использованием полужирного шрифта.

Наследование параметров выравнивания

Выравнивание содержимого ячейки могут задаваться для каждой ячейки или наследоваться от элементов верхнего уровня, таких как строка, столбец или сама таблица.

Приоритет (от высшего к низшему) атрибутов align, char и charoff следующий:

  1. Атрибут выравнивания, установленный для элемента в данных ячейки (например, P).
  2. Атрибут выравнивания, установленный в ячейке (TH и TD).
  3. Атрибут выравнивания, установленный в элементе группировки столбцов (COL и COLGROUP). Если ячейка является частью span из нескольких столбцов, свойство выравнивания наследуется от определения ячейки в начале span.
  4. Атрибут выравнивания, установленный в элементе строки или группировки строк(TR, THEAD, TFOOT и TBODY). Если ячейка является частью span из нескольких строк, свойство выравнивания наследуется от определения ячейки в начале span.
  5. Атрибут выравнивания, установленный в таблице(TABLE).
  6. Значение выравнивания по умолчанию.

Приоритет (от высшего к низшему) атрибута valign (а также других унаследованных атрибутов lang, dir и style) следующий:

  1. Атрибут, установленный для элемента в данных ячейки (например, P).
  2. Атрибут, установленный для ячейки (TH и TD).
  3. Атрибут, установленный для элемента строки или группировки строк (TR, THEAD, TFOOT и TBODY). Если ячейка является частью span из многих строк, значение атрибута наследуется от определения ячейки в начале span.
  4. Атрибут, установленный для элемента группировки столбцов (COL и COLGROUP). Если ячейка является частью span из многих столбцов, значение атрибута наследуется от определения ячейки в начале span.
  5. Атрибут, установленный для таблицы(TABLE).
  6. Значение атрибута по умолчанию.

Кроме того, при генерации ячеек горизонтальное выравнивание определяется сначала для столбцов, а потом для строк, а вертикальное выравнивание - для строк, а потом для столбцов.

Выравнивание ячеек по умолчанию зависит от агента пользователя. Однако агенты пользователя должны подставлять атрибут по умолчанию соответственно текущем направлению (то есть не просто "left" во всех случаях).

Агенты пользователя, не поддерживающие значение "justify" атрибута align должны использовать значение, соответствующее направлению.

Примечание. Помните, что ячейка может наследовать атрибут не от родителя, а от первой ячейки в span. Это является исключением из общих правил наследования атрибутов.

11.3.3 Поля ячейки

Определения атрибутов

cellspacing = длина [CN]
Этот атрибут определяет пространство, которое агент пользователя должен оставить между левой стороной таблицы и левым краем крайнего левого столбца, верхней границей таблицы и верхним краем самой верхней строки и так далее для правой и нижней границ таблицы. Этот атрибут также определяет пространство между ячейками.
cellpadding = длина [CN]
Этот атрибут определяет пространство между границей ячейки и ее содержимым. Если значение этого атрибута указано в пикселах, все четыре поля должны иметь этот размер. Если значение атрибута указано в процентах, верхнее и нижнее поля должны быть отделены от содержимого на одинаковый процент доступного вертикального пространства, а левое и правое поля должны быть отделены от содержимого на одинаковый процент доступного горизонтального пространства.

Эти два атрибута управляют расстоянием между ячейками и внутри них. Они объясняются на следующей иллюстрации:

Атрибуты cellspacing и cellpadding.

В следующем примере атрибут cellspacing задает расстояние в двадцать пикселов между ячейками и от края таблицы. Атрибут cellpadding определяет, что верхнее и нижнее поля ячейки отделяются от содержимого ячейки на 10% доступного вертикального пространства (всего 20%). Точно так же, левое и правое поле ячейки будут отделены от содержимого на 10% доступного горизонтального пространства (всего 20%).

<TABLE cellspacing="20" cellpadding="20%">
<TR> <TD>Данные1 <TD>Данные2 <TD>Данные3
</TABLE>

Если таблица или данный столбец имеет фиксированную ширину, cellspacing и cellpadding могут занимать больше пространства, чем назначено. Агенты пользователей могут давать этим атрибутам приоритет над атрибутом width в случае конфликта, но они не обязательно должны это делать.

11.4 Генерация таблиц невизуальными агентами пользователей

11.4.1 Связь информации заголовка с ячейками данных

Невизуальные агенты пользователей, такие как синтезаторы речи и устройства на базе азбуки Бройля, могут использовать следующие атрибуты элементов TD и TH для более intuitive генерации ячеек таблицы:

  • Для данной ячейки данных в атрибуте headers перечислено, в каких ячейках находится pertinent информация заголовка. С этой целью каждая ячейка заголовка должна получить имя с использованием атрибута id. Помните, что не всегда возможно явно разделить ячейки на заголовки и данные. В таких ячейка следует использовать элемент TD вместе с атрибутами id или scope.
  • Для данной ячейки заголовка атрибутscope сообщает агенту пользователя ячейки данных, информация для которых указывается этим заголовком. Авторы могут использовать этот атрибут вместо headers в зависимости от того, что более удобно; эти два атрибута имеют одну и ту же функцию. Атрибут headers обычно нужен, если заголовки помещаются в нестандартном положении по отношению к данным, к которым они применяются.
  • Атрибут abbr задает сокращенный заголовок для ячеек заголовков, так что агенты пользователя могут быстрее генерировать информацию заголовка.

В следующем примере мы назначаем информацию заголовка ячейкам, устанавливая атрибут headers. Каждая ячейка в одном и том же столбце относится к одной и той же ячейке заголовка (с помощью атрибута id).

<TABLE border="1"
       summary="В этой таблице приводится информация о том, сколько
                чашек кофе выпивает каждый сенатор, о типа кофе
                (без кофеина или обычный) и о сахаре.">
<CAPTION>Сколько чашек кофе выпивает каждый сенатор</CAPTION>
<TR>
   <TH id="t1">Имя</TH>
   <TH id="t2">Сколько</TH>
   <TH id="t3" abbr="Тип">Тип кофе</TH>
   <TH id="t4">Сахар?</TH>
<TR>
   <TD headers="t1">Т. Секстон</TD>
   <TD headers="t2">10</TD>
   <TD headers="t3">Эспрессо</TD>
   <TD headers="t4">Нет</TD>
<TR>
   <TD headers="t1">Дж. Диннен</TD>
   <TD headers="t2">5</TD>
   <TD headers="t3">Без кофеина</TD>
   <TD headers="t4">Да</TD>
</TABLE>

Синтезатор речи может генерировать эту таблицу следующим образом:

Заголовок: Сколько чашек кофе выпивает каждый сенатор
Summary: В этой таблице приводится информация о том, сколько
         чашек кофе выпивает каждый сенатор, о типа кофе
         (без кофеина или обычный) и о сахаре.
Имя: Т. Секстон,   Сколько: 10,   Тип: Эспрессо,    Сахар: Нет
Имя: Дж. Диннен,   Сколько: 5,    Тип: Без кофеина, Сахар: Да

Заметьте, что заголовок "Тип кофе" сокращается до "Тип" с помощью атрибута abbr.

Вот тот же пример, использующий атрибут scope вместо атрибута headers. Обратите внимание на значение "col" для атрибута scope, означающее "все ячейки в текущем столбце":

<TABLE border="1"
       summary="В этой таблице приводится информация о том, сколько
                чашек кофе выпивает каждый сенатор, о типа кофе
                (без кофеина или обычный) и о сахаре.">
<CAPTION>Сколько чашек кофе выпивает каждый сенатор</CAPTION>
<TR>
   <TH scope="col">Имя</TH>
   <TH scope="col">Сколько</TH>
   <TH scope="col" abbr="Тип">Тип кофе</TH>
   <TH scope="col">Сахар?</TH>
<TR>
   <TD>Т. Секстон</TD>
   <TD>10</TD>
   <TD>Эспрессо</TD>
   <TD>Нет</TD>
<TR>
   <TD>Дж. Диннен</TD>
   <TD>5</TD>
   <TD>Без кофеина</TD>
   <TD>Да</TD>
</TABLE>

Ниже приводится несколько более сложный пример, в котором показаны другие значения атрибута scope:

<TABLE border="1" cellpadding="5" cellspacing="2"
  summary="Исторические курсы, предлагаемые округа Бат,
           упорядоченные по названию, преподавателю, описанию,
           коду и стоимости">
  <TR>
    <TH colspan="5" scope="colgroup">Курсы - Бат, осень 1997 г.</TH>
  </TR>
  <TR>
    <TH scope="col" abbr="Название">Название курса</TH>
    <TH scope="col" abbr="Преподаватель">Преподаватель курса</TH>
    <TH scope="col">Описание</TH>
    <TH scope="col">Код</TH>
    <TH scope="col">Стоимость</TH>
  </TR>
  <TR>
    <TD scope="row">После Гражданской войны</TD>
    <TD>Доктор Джон Раутон</TD>
    <TD>
       В этом курсе изучаются turbulent годы в Англии после 1646 года.
    <EM>6 еженедельных занятий, начиная с понедельника, 13 октября.</EM>
    </TD>
    <TD>H27</TD>
    <TD>&pound;32</TD>
  </TR>
  <TR>
    <TD scope="row">Англо-саксонская Англия - введение</TD>
    <TD>Марк Коттл</TD>
    <TD>
       Однодневный курс - введение в раннесредневековый период
       Реконструкции англо-саксонского общества. <EM>Суббота, 18
       октября.</EM>
    </TD>
    <TD>H28</TD>
    <TD>&pound;18</TD>
  </TR>
  <TR>
    <TD scope="row">Греция</TD>
    <TD>Валери Лоренц</TD>
    <TD>
     Колыбель демократии, философии, сердце театра, родина аргумента. Это могли сделать римляне, если бы греки не опередили их. <EM>Субботняя школа 25 октября 1997 года</EM>
    </TD>
    <TD>H30</TD>
    <TD>&pound;18</TD>
  </TR>
</TABLE>

Графический агент пользователя может сгенерировать это следующим образом:

Таблица с объединенными ячейками

Обратите внимание на использование атрибута scope со значением "row". Хотя первая ячейка в каждой строке содержит данные, а не заголовок, благодаря атрибуту scope ячейки данных выглядят как ячейки заголовка строки. Это позволяет синтезаторам речи указывать соответствующее название курса по запросу или произносить его непосредственно перед содержимым ячейки.

11.4.2 Категоризация ячеек

Возможно, пользователи, просматривающие таблицу с использованием речевых агентов, захотят услышать пояснение к содержимым ячейки в дополнение к самой информации. Один из способов, которым агент пользователя может обеспечить пояснения, - произносить соответствующую заголовочную информацию перед произнесением информации, являющейся содержимым ячейки (см. раздел о связи заголовочной информации с ячейками данных).

Пользователям может также понадобиться информация о нескольких ячейках, и в этом случае заголовочная информация, заданная на уровне ячейки (с помощью headers, scope, и abbr) может не соответствовать контексту. Рассмотрим следующую таблицу с классификацией расходов на еду, гостиницы и транспорт в двух пунктах (Сан-Хосе и Сиэтле) за несколько дней:

Таблица с перечнем расходов на командировку в два пункта: Сан-Хосе и Сиэтл, по дате и категории (еда, гостиница и транспорт), показанная с подзаголовками

Пользователям понадобится извлечь информацию из таблицы в форме запросов:

  • "Сколько всего денег я потратил на еду?"
  • "Сколько я потратил на еду 25 августа?"
  • "Сколько всего денег я потратил в Сан-Хосе?"

Каждый запрос подразумевает вычисления, выполняемые агентом пользователя, которые могут затрагивать несколько или ни одной ячейки. Чтобы определить, например, расходы на еду 25 августа, агент пользователя должен знать, какие ячейки таблицы относятся к "Еде" (все эти ячейки), а какая к "Датам" (25 августа), и найти пересечение этих двух наборов.

Для принятия запроса такого типа модель таблиц HTML 4.0 позволяет авторам помещать заголовки и данные ячеек в категории. Например, в таблице расходов на командировку автор может сгруппировать ячейки заголовков "Сан-Хосе" и "Сиэтл" в категорию "Пункт", заголовки "Еда", "Гостиницы" и "Транспорт" в категорию "Расходы", а четыре дня в категорию "Дата". Тогда предыдущие три вопроса будут иметь следующее значение:

  • "Сколько всего денег я потратил на еду?" означает "Все ячейки данных из категории "Расходы=Еда"?
  • "Сколько я потратил на еду 25 августа?" означает "Все ячейки данных из категорий "Расходы=Еда" и "Дата=25-авг-1997"?
  • "Сколько всего денег я потратил в Сан-Хосе?" означает "Все ячейки данных из категорий "Расходы=Еда, Гостиницы, Транспорт" и "Пункт=Сан-Хосе"?

Авторы определяют категории заголовков или ячеек данных, устанавливая для ячейки атрибут axis. Например, в таблице расходов на командировку ячейка, содержащая информацию "Сан-Хосе" может быть помещена в категорию "Пункт" следующим образом:

  <TH id="a6" axis="пункт">Сан-Хосе</TH>

Любая ячейка, содержащая информацию, относящуюся к "Сан-Хосе", должна ссылаться на эту ячейку заголовка с помощью атрибута headers или scope. Таким образом, расходы на еду 25-авг-1997 должны иметь ссылку на атрибут id (значение которого здесь - "a6") ячейки заголовка "Сан-Хосе":

  <TD headers="a6">37.74</TD>

Каждый атрибут headers содержит список ссылок id. Авторы таким образом могут определять категории для данной ячейки с помощью данного ряда способов (или along any number of "headers", hence the name).

Ниже в таблице командировочных расходов указана информация о категориях:

<TABLE border="1"
          summary="В этой таблице приводятся сведения о
                   командировочных расходах в августе
                   в Сан-Хосе и Сиэтле">
<CAPTION>
  Отчет о командировочных расходах
</CAPTION>
<TR>
  <TH></TH>
  <TH id="a2" axis="расходы">Еда</TH>
  <TH id="a3" axis="расходы">Гостиницы</TH>
  <TH id="a4" axis="расходы">Транспорт</TH>
  <TD>итого</TD>
</TR>
<TR>
  <TH id="a6" axis="пункт">Сан-Хосе</TH>
  <TH></TH>
  <TH></TH>
  <TH></TH>
  <TD></TD>
</TR>
<TR>
  <TD id="a7" axis="дата">25-авг-97</TD>
  <TD headers="a6 a7 a2">37.74</TD>
  <TD headers="a6 a7 a3">112.00</TD>
  <TD headers="a6 a7 a4">45.00</TD>
  <TD></TD>
</TR>
<TR>
  <TD id="a8" axis="дата">26-авг-97</TD>
  <TD headers="a6 a8 a2">27.28</TD>
  <TD headers="a6 a8 a3">112.00</TD>
  <TD headers="a6 a8 a4">45.00</TD>
  <TD></TD>
</TR>
<TR>
  <TD>итого</TD>
  <TD>65.02</TD>
  <TD>224.00</TD>
  <TD>90.00</TD>
  <TD>379.02</TD>
</TR>
<TR>
  <TH id="a10" axis="пункт">Сиэтл</TH>
  <TH></TH>
  <TH></TH>
  <TH></TH>
  <TD></TD>
</TR>
<TR>
  <TD id="a11" axis="дата">27-авг-97</TD>
  <TD headers="a10 a11 a2">96.25</TD>
  <TD headers="a10 a11 a3">109.00</TD>
  <TD headers="a10 a11 a4">36.00</TD>
  <TD></TD>
</TR>
<TR>
  <TD id="a12" axis="дата">28-авг-97</TD>
  <TD headers="a10 a12 a2">35.00</TD>
  <TD headers="a10 a12 a3">109.00</TD>
  <TD headers="a10 a12 a4">36.00</TD>
  <TD></TD>
</TR>
<TR>
  <TD>итого</TD>
  <TD>131.25</TD>
  <TD>218.00</TD>
  <TD>72.00</TD>
  <TD>421.25</TD>
</TR>
<TR>
  <TH>Всего</TH>
  <TD>196.27</TD>
  <TD>442.00</TD>
  <TD>162.00</TD>
  <TD>800.27</TD>
</TR>
</TABLE>

Обратите внимание на то, что такая разметка таблицы также позволяет агентам пользователей не сбивать пользователей с толку ненужной информацией. Например, если синтезатор речи должен был произнести все цифры из столбца "Еда" этой таблицы в ответ на запрос "Все расходы на еду?", пользователь не смог бы отличить дневные расходы от итоговой суммы. С помощью тщательной категоризации данных авторы позволяют агентам пользователей делать важные семантические различия при генерации.

Конечно, авторы не ограничены в категоризации информации в таблице. В таблице командировочных расходов, например, мы можем ввести дополнительные категории "итого" и "всего".

Данная спецификация не выставляет требование к агентам пользователей по обработке информации, предоставляемой атрибутом axis, а также не дает никаких рекомендаций относительно представления агентами пользователей информации из атрибута axis или спецификации запросов пользователями этой информации у агентов.

Однако агенты пользователей, особенно синтезаторы речи, могут выделять информацию, общую для нескольких ячеек, являющихся результатами запроса. Например, если пользователь спрашивает "Сколько всего денег я потратил на еду в Сан-Хосе?", агент пользователя должен определить соответствующие ячейки (25-авг-1997: 37.74, 26-авг-1997:27.28), а затем сгенерировать информацию. Агент пользователя может произнести следующую информацию:

   Пункт: Сан-Хосе. Дата: 25-авг-1997. Расходы, Еда: 37.74
   Пункт: Сан-Хосе. Дата: 26-авг-1997. Расходы, Еда: 27.28

или более компактно:

   Сан-Хосе, 25-авг-1997, Еда: 37.74
   Сан-Хосе, 26-авг-1997, Еда: 27.28

Еще более экономичная генерация может выделить еще более общую информацию и переупорядочить ее:

   Сан-Хосе, Еда, 25-авг-1997: 37.74
                  26-авг-1997: 27.28

Агенты пользователей, поддерживающие генерацию такого типа, должны обеспечивать средства настройки генерации (например, с помощью таблиц стилей).

11.4.3 Алгоритм поиска заголовочной информации

В отсутствии заголовочной информации в атрибуте scope или headers агенты пользователей могут составлять эту информацию в соответствии со следующим алгоритмом. Целью алгоритма является нахождение упорядоченного списка заголовков. (В следующем описании алгоритма принято направление таблицы слева направо.)

  • Сначала выполняется поиск влево от позиции ячейки для определения ячейки заголовка строки. Затем выполняется поиск вверх для определения ячейки заголовка столбца. Поиск в заданном направлении прекращается, если достигнут край таблицы или обнаружена ячейка данных после ячейки заголовка.
  • Заголовки строк помещаются в список в том порядке, в котором они расположены в таблице. Для таблиц, направленных слева направо, заголовки помещаются слева направо.
  • Заголовки столбцов помещаются после заголовков строк, в том порядке, в каком они расположены в таблице, сверху вниз.
  • Если для ячейки заголовка установлен атрибут headers, заголовки, на которые ссылается этот атрибут, помещаются в список, и поиск для текущего направления прекращается.
  • Ячейки TD, в которых устанавливается атрибут axis, обрабатываются так же, как и ячейки заголовков.

11.5 Пример таблицы

В этом примере показаны сгруппированные строки и столбцы. Пример взят из книги "Разработка интернационального программного обеспечения" Надин Кэно.

В "формате ascii" следующая таблица:

<TABLE border="2" frame="hsides" rules="groups"
          summary="Поддержка кодовых страниц в различных версиях MS Windows.">
<CAPTION>ПОДДЕРЖКА КОДОВЫХ СТРАНИЦ В MICROSOFT WINDOWS</CAPTION>
<COLGROUP align="center">
<COLGROUP align="left">
<COLGROUP align="center" span="2">
<COLGROUP align="center" span="3">
<THEAD valign="top">
<TR>
<TH>ИД кодовой<BR>страницы
<TH>Название
<TH>ACP
<TH>OEMCP
<TH>Windows<BR>NT 3.1
<TH>Windows<BR>NT 3.51
<TH>Windows<BR>95
<TBODY>
<TR><TD>1200<TD>Unicode (BMP of ISO/IEC-10646)<TD><TD><TD>X<TD>X<TD>*
<TR><TD>1250<TD>Windows 3.1 Восточноевропейская<TD>X<TD><TD>X<TD>X<TD>X
<TR><TD>1251<TD>Windows 3.1 Кириллица<TD>X<TD><TD>X<TD>X<TD>X
<TR><TD>1252<TD>Windows 3.1 США (ANSI)<TD>X<TD><TD>X<TD>X<TD>X
<TR><TD>1253<TD>Windows 3.1 Греческая<TD>X<TD><TD>X<TD>X<TD>X
<TR><TD>1254<TD>Windows 3.1 Турецкая<TD>X<TD><TD>X<TD>X<TD>X
<TR><TD>1255<TD>Иврит<TD>X<TD><TD><TD><TD>X
<TR><TD>1256<TD>Арабская<TD>X<TD><TD><TD><TD>X
<TR><TD>1257<TD>Балтийская<TD>X<TD><TD><TD><TD>X
<TR><TD>1361<TD>Корейская (Johab)<TD>X<TD><TD><TD>**<TD>X
<TBODY>
<TR><TD>437<TD>США MS-DOS<TD><TD>X<TD>X<TD>X<TD>X
<TR><TD>708<TD>Арабская (ASMO 708)<TD><TD>X<TD><TD><TD>X
<TR><TD>709<TD>Арабская (ASMO 449+, BCON V4)<TD><TD>X<TD><TD><TD>X
<TR><TD>710<TD>Арабская (Прозрачная арабская)<TD><TD>X<TD><TD><TD>X
<TR><TD>720<TD>Арабская (Прозрачная ASMO)<TD><TD>X<TD><TD><TD>X
</TABLE>

может быть сгенерирована следующим образом:

          ПОДДЕРЖКА КОДОВЫХ СТРАНИЦ В MICROSOFT WINDOWS
=================================================================================
ИД кодовой| Название                       | ACP  OEMCP | Windows Windows Windows
Страницы  |                                |            |  NT 3.1 NT 3.51    95
---------------------------------------------------------------------------------
   1200   | Unicode (BMP of ISO 10646)     |            |    X       X       *
   1250   | Windows 3.1 Восточноевропейская|  X         |    X       X       X
   1251   | Windows 3.1 Кириллица          |  X         |    X       X       X
   1252   | Windows 3.1 США (ANSI)         |  X         |    X       X       X
   1253   | Windows 3.1 Греческая          |  X         |    X       X       X
   1254   | Windows 3.1 Турецкая           |  X         |    X       X       X
   1255   | Иврит                          |  X         |                    X
   1256   | Арабская                       |  X         |                    X
   1257   | Балтийская                     |  X         |                    X
   1361   | Корейская (Johab)              |  X         |            **      X
-------------------------------------------------------------------------------
    437   | США MS-DOS                     |        X   |    X       X       X
    708   | Арабская (ASMO 708)            |        X   |                    X
    709   | Арабская (ASMO 449+, BCON V4)  |        X   |                    X
    710   | Арабская (Прозрачная арабская) |        X   |                    X
    720   | Арабская (Прозрачная ASMO)     |        X   |                    X
===============================================================================

Графический агент пользователя может сгенерировать ее следующим образом:

Таблица со сгруппированными строками и столбцами

В данном примере показано, как можно использовать COLGROUP для группировки столбцов и установки выравнивания столбцов по умолчанию. Точно так же TBODY используется для группировки строк. Атрибуты frame и rules сообщают агенту пользователя, какие границы и rules должны генерироваться.


Абзацы, строки и фразы

9 Текст

  1. Неотображаемые символы
  2. Структурированный текст
    1. Элементы фраз: EM, STRONG, DFN, CODE, SAMP, KBD, VAR, CITE, ABBR и ACRONYM
    2. Кавычки: элементы BLOCKQUOTE и Q
      • Отображение информации в кавычках
    3. Верхние и нижние индексы: элементы SUB и SUP
  3. Строки и абзацы
    1. Абзацы: элемент P
    2. Управление переходом на следующую строку
      • Принудительный переход на следующую строку: элемент BR
      • Запрет перехода на новую строку
    3. Переносы
    4. Форматированный текст: элемент PRE
    5. Визуальное представление абзацев
  4. Разметка изменений в документе: элементы INS и DEL

В следующих разделах обсуждаются вопросы структурирования текста. Элементы представления текста (элементы выравнивания, шрифта, таблицы стилей и т.д.) обсуждаются в других частях этой спецификации. Информацию о символах см. в разделе о наборе символов документа.

9.1 Неотображаемые символы

Набор символов документа включает множество различных неотображаемых символов. Многие из них являются типографскими элементами, используемым в некоторых приложениях для достижения специальных визуальных эффектов отображения. В языке HTML только следующие символы определяются как неотображаемые:

  • пробел набора символов ASCII (&#x0020;)
  • табуляция набора символов ASCII (&#x0009;)
  • ASCII form feed (&#x000C;)
  • пробел нулевой ширины (&#x200B;)

Символы перевода строки также являются неотображаемыми. Помните, что хотя символы &#x2028; и &#x2029; определены в спецификации [ISO10646] как разделители строк и абзацев соответственно, это не определяет символы перевода строки в HTML, а также в этой спецификации они не включены в более общую категорию неотображаемых символов.

В этой спецификации не определяется поведение, отображение и пр. символов пробелов, если они явно не определены как неотображаемые символы. По этой причине для достижения визуальных эффектов форматирования, использующих неотображаемые символы вместо пробелов, авторам следует использовать соответствующие элементы и таблицы стилей.

Для всех элементов HTML, кроме последовательностей неотображаемых слово (мы используем термин "слово" для обозначения "последовательности отображаемых символов") в теге PRE. При форматировании текст агенты пользователей должны идентифицировать эти слова и обрабатывать их в соответствии с соглашениями относительно определенного языка и целевого носителя.

Форматирование может включать пробелы между словами (называемые межсловными пробелами), но соглашения относительно межсловных пробелов меняются в зависимости от сценария. Например, в латинских сценариях межсловный пробел обычно отображается как пробел набора символов ASCII (&#x0020;), в то время как в таиландской кодировке это разделитель слов нулевой ширины (&#x200B;). В японской и китайской кодировке межсловный пробел обычно вообще не генерируется.

Помните, что последовательность неотображаемых символов между словами в исходном документе может вызвать отображение совершенно другого межсловного пробела (кроме элемента PRE). В частности, агенты пользователей должны прекращать ввод последовательностей неотображаемых символов при выводе межсловного пробела. Это можно и нужно делать, даже при отсутствии информации о языке (из атрибута lang, полях заголовка HTTP "Content-Language" (см. [RFC2068], раздел14.13), настроек агента пользователя и т.д.).

Элемент PRE используется для форматированного текста, в котором неотображаемые символы имеют важное значение.

Для того, чтобы избежать проблем с правилами переноса строк SGML и несоответствия между существующими применениями, авторы не должны полагаться на агенты пользователей при генерации неотображаемых символов непосредственно после начального тега или непосредственно перед конечным тегом. Таким образом, авторы и особенно средства разработки, должны писать, например:

  <P>Мы предлагаем бесплатную <A>техническую поддержку</A> для зарегистрированных пользователей.</P>

и не должны писать:

  <P>Мы предлагаем бесплатную<A> техническую поддержку </A>для зарегистрированных пользователей.</P>

9.2 Структурированный текст

9.2.1 Элементы фраз: EM, STRONG, DFN, CODE, SAMP, KBD, VAR, CITE, ABBR и ACRONYM

<!ENTITY % phrase "EM | STRONG | DFN | CODE |
                   SAMP | KBD | VAR | CITE | ABBR | ACRONYM" >
<!ELEMENT (%fontstyle;|%phrase;) - - (%inline;)*>
<!ATTLIST (%fontstyle;|%phrase;)
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

Начальный тег: обязателен, Конечный тег: обязателен

Атрибуты, определяемые в любом другом месте

  • id, class (идентификаторы в пределах документа)
  • lang (language information), dir (направление текста)
  • title (заголовок элемента)
  • style (встроенная информация о стиле)
  • onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup ( внутренние события)

Фразовые элементы добавляют в текстовые фрагменты структуру. Обычное значение фразовых элементов следующее:

EM:
Выделение.
STRONG:
Более сильное выделение.
CITE:
Содержит цитату или ссылку на другие ресурсы.
DFN:
Указывает, что это является определением вложенного термина.
CODE:
Фрагмент компьютерного кода.
SAMP:
Вывод примера программ, сценариев и т.д.
KBD:
Текст, который должен ввести пользователь.
VAR:
Экземпляр переменной или аргумента программы.
ABBR:
Сокращенная форма (например, WWW, HTTP, URI, Mass., и т.д.).
ACRONYM:
Акроним (например, WAC, радар и т.д.).

Элементы EM и STRONG используются для выделения. Другие фразовые элементы имеют определенное значение в технических документах. В следующих примерах показано использование некоторых фразовых элементов:

Как сказал <CITE>Гари Трумэн</CITE>,
<Q lang="en-US">The buck stops here.</Q>

Подробнее см. <CITE>[ISO-0000]</CITE>.

В дальнейшем используйте следующий номер ссылки: <STRONG>1-234-55</STRONG>

Представление фразовых элементов зависит от агента пользователя. Обычно визуальные агенты пользователей представляют текст элемента EM курсивом, а текст элемента STRONG полужирным шрифтом. Синтезаторы речи могут изменять параметры синтеза, например, громкость, повышение тона и скорости соответственно.

Элементы ABBR и ACRONYM позволяют авторам явно показывать использование аббревиатур и акронимов. Западные языки широко используют акронимы, такие как "GmbH", "НАТО" и "ФБР", а также аббревиатуры типа "M.", "Inc.", "et al.", "etc.". В китайском и японском языках используются аналогичные механизмы аббревиатур, когда длинное название заменяется последовательностью символов Han из оригинала. Разметка этих конструкций предоставляет агентам пользователей и вспомогательным средствам, таким как средства проверки орфографии, синтезаторы речи, переводящие системы и индексаторы поисковых машин, полезную информацию.

Содержимое элементов ABBR и ACRONYM определяет саму аббревиатуру, как она обычно отображается в тексте. Атрибут title этих элементов может использоваться для указания полной развернутой формы выражения.

Несколько примеров использования элемента ABBR:

  <P>
  <ABBR title="World Wide Web">WWW</ABBR>
  <ABBR lang="fr"
        title="Soci&eacute;t&eacute; Nationale des Chemins de Fer">
     SNCF
  </ABBR>
  <ABBR lang="es" title="Do&ntilde;a">Do&ntilde;a</ABBR>
  <ABBR title="Abbreviation">abbr.</ABBR>

Помните, что аббревиатуры и акронимы часто имеют различное произношение. Например, если слова "США" и "BBC" обычно произносятся побуквенно, слова "НАТО" и "ЮНЕСКО" произносятся фонетически. Другие формы аббревиатур (например, "URI" и "SQL") некоторыми людьми произносятся побуквенно, а другими - как слова. При необходимости авторам следует использовать таблицы стилей для указания произношения аббревиатур.

9.2.2 Кавычки: Элементы BLOCKQUOTE и Q

<!ELEMENT BLOCKQUOTE - - (%block;|SCRIPT)+ -- длинная цитата -->
<!ATTLIST BLOCKQUOTE
  %attrs;                              -- %coreattrs, %i18n, %events --
  cite        %URI;          #IMPLIED  -- адрес URI документа или сообщения --
  >
<!ELEMENT Q - - (%inline;)*            -- краткая встроенная цитата -->
<!ATTLIST Q
  %attrs;                              -- %coreattrs, %i18n, %events --
  cite        %URI;          #IMPLIED  -- адрес URI документа или сообщения --
  >

Начальный тег: обязателен, конечный тег: обязателен

Определения атрибутов

cite = uri [CT]
Значением этого атрибута является URI, определяющий источник документа или сообщения. Этот атрибут предназначен для предоставления информации об источнике, из которого заимствована цитат.

Атрибуты, определяемые в любом другом месте

  • id, class (идентификаторы в пределах документа)
  • lang (информация о языке), dir (направление текста)
  • title (заголовок элемента)
  • style (встроенная информация о стиле)
  • onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события)

Эти два элемента определяют текст в кавычках. Элемент BLOCKQUOTE предназначен для длинных цитат (содержимое уровня блока) и Q предназначен для коротких цитат (встроенное содержимое), в которых не нужно разбиение на абзацы.

В этом примере цитата из книги "Две твердыни" Дж. Р. Р. Толкиена отформатирована с помощью элемента blockquote.

<BLOCKQUOTE cite="http://www.mycom.com/tolkien/twotowers.html">
<P>They went in single file, running like hounds on a strong scent,
and an eager light was in their eyes. Nearly due west the broad
swath of the marching Orcs tramped its ugly slot; the sweet grass
of Rohan had been bruised and blackened as they passed.</P>
</BLOCKQUOTE>

Отображение информации в кавычках

Визуальные агенты пользователей обычно генерируют элемент BLOCKQUOTE как блок с отступом.

Визуальные агенты пользователей должны обеспечивать отображение содержимого элемента Q с кавычками в начале и в конце. Авторы не должны помещать кавычки в начало и в конец текста в элементе Q.

Агенты пользователей должны генерировать кавычки с учетом принятого в данном языке стиля (см. атрибуты lang). Во многих языках используются различные стили для внешних и внутренних (вложенных) кавычек, которые должны соответственно отображаться агентами пользователей.

В примере ниже показаны вложенные кавычки в элементе Q.

John said, <Q lang="en">I saw Lucy at lunch, she says <Q lang="en">Mary wants you to get some ice cream on your way home.</Q> I think I will get some at Ben and Jerry's, on Gloucester Road.</Q>

Поскольку в обеих цитатах используется английский язык, агенты пользователей должны генерировать их соответственно - одиночные кавычки во внутренних кавычках и двойные - во внешних:

  John said, "I saw Lucy at lunch, she told me 'Mary wants you to get some ice cream on your way home.' I think I will get some at Ben and Jerry's, on Gloucester Road."

Примечание.В реализации таблиц стилей рекомендуется обеспечение механизма вставки кавычек перед цитатой, определяемой элементом BLOCKQUOTE, и после нее в соответствии с текущим языком и степенью вложенности кавычек.

Однако, поскольку некоторые авторы использовали элемент BLOCKQUOTE в основном для отступа текста, чтобы не нарушать намерения авторов, агенты пользователей не должны вставлять кавычки в стиль по умолчанию.

В связи с этим использование элемента BLOCKQUOTE для смещения текста нежелательно.

9.2.3 Верхние и нижние индексы: элементы SUBи SUP

<!ELEMENT (SUB|SUP) - - (%inline;)*    -- нижний индекс, верхний индекс-->
<!ATTLIST (SUB|SUP)
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

Начальный тег: обязателен, Конечный тег: обязателен

Атрибуты, определяемые в любом другом месте

  • id, class (идентификаторы в пределах документа)
  • lang (language information), dir (направление текста)
  • title (заголовок элемента)
  • style (встроенная информация о стиле)
  • onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события)

Часто для правильной генерации необходимы верхние и нижние индексы (например, во французском языке). В этих случаях для разметки текста должны использоваться элементы SUB и SUP.

      H<sub>2</sub>O
      E = mc<sup>2</sup>
      <SPAN lang="fr">M<sup>lle</sup> Dupont</SPAN>

9.3 Строки и абзацы

Авторы традиционно разделяют свои тексты на последовательности абзацев. Организация информации в абзацы не влияет на представление абзаца: абзацы с двойным выравниванием содержат те же мысли, что и абзацы с выравниванием влево.

Разметка HTML для определения абзаца проста: элемент P определяет новый абзац.

Визуальное представление абзаца не так просто. Имеется ряд проблем, стилистических и технических:

  • Обработка непечатных символов
  • Перенос строки и продолжение слов
  • Выравнивание
  • Перенос
  • Соглашения относительного письменного языка и направления текста
  • Форматирование абзацев относительно окружающего

Эти вопросы обсуждаются ниже. Выравнивание абзаца и плавающие объекты обсуждаются далее в этом документе.

9.3.1 Абзацы: элемент P

<!ELEMENT P - O (%inline;)*            -- абзац -->
<!ATTLIST P
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

Начальный тег: обязателен, Конечный тег: необязателен

Атрибуты, определяемые в любом другом месте

  • id, class (идентификаторы в пределах документа)
  • lang (language information), dir (направление текста)
  • title (заголовок элемента)
  • style (встроенная информация о стиле)
  • align (выравнивание)
  • onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события)

Элемент P представляет абзац. В нем не могут содержаться элементы уровня блока (включая и сам элемент P).

Мы призываем авторов не использовать пустой элемент P. Агенты пользователей должны игнорировать пустые элементы P.

9.3.2 Управление переходом на следующую строку

Переходом на следующую строку считается возврат каретки (&#x000D;), перевод строки (&#x00OA;) или пара возврат каретки/перевод строки. Все переходы на другую строку являются непечатными символами.

Подробнее о переходе на другую строку в спецификации SGML см. в разделе замечаний о переходе на новую строку в приложении.

Принудительный переход на новую строку: элемент BR

<!ELEMENT BR - O EMPTY                 -- принудительный переход на новую строку -->
<!ATTLIST BR
  %coreattrs;                          -- id, class, style, title --
  >

Начальный тег: обязателен, Конечный тег: запрещен

Атрибуты, определяемые в любом другом месте

  • id, class (идентификаторы в пределах документа)
  • title (заголовок элемента)
  • style (встроенная информация о стиле)
  • clear (выравнивание и плавающие объекты)

Элемент BR принудительно разбивает (заканчивает) текущую строку текста.

Для визуальных агентов пользователей можно использовать атрибут clear для определения того, обтекает ли следующая за элементом BR разметка изображения и другие объекты, плавающие относительно левого или правого поля или начинается ниже объекта. Дальнейшая информация приведена в разделе о выравнивании и плавающих объектах. Авторам рекомендуется использовать таблицы стилей для управления обтеканием текстом изображений и других объектов.

С использованием двунаправленного форматирования, элемент BR должен действовать так же, как действует символ РАЗДЕЛИТЕЛЬ СТРОКИ [ISO10646] в двунаправленном алгоритме.

Запрет перехода на новую строку

Иногда авторам нужно избежать перехода на новую строку между двумя определенными словами. Комбинация символов &nbsp; (&#160; или &#xA0;) действует как неразрывный пробел.

9.3.3 Переносы

В HTML имеется два типа переносов: простой и мягкий перенос. Простой перенос должен интерпретироваться агентами пользователя просто как любой другой символ. Мягкий перенос показывает агенту пользователя, где можно сделать переход на новую строку.

Браузеры, которые интерпретируют мягкие переносы, должны обеспечивать следующую семантику: если строка прекращается в месте мягкого переноса, в конце первой строки должен отображаться символ переноса. Если строка не прерывается в месте мягкого переноса, символ переноса отображаться не должен. При выполнении таких операций как поиск и сортировка мягкие переносы всегда должны игнорироваться.

В языке HTML простой перенос представляется символом "-" (&#45; или &#x2D;). Мягкий перенос представляется комбинацией символов &shy; (&#173; или &#xAD;)

9.3.4 Форматированный текст: Элемент PRE

<!ENTITY % pre.exclusion "IMG|OBJECT|BIG|SMALL|SUB|SUP">

<!ELEMENT PRE - - (%inline;)* -(%pre.exclusion;) - форматированный текст -->
<!ATTLIST PRE
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

Начальный тег: обязателен, Конечный тег: обязателен

Определения атрибутов

width = number [CN]
Этот атрибут предоставляет визуальным агентам пользователей подсказку относительно желаемой ширины блока форматированного текста. Агент пользователя может использовать эту информацию для выбора соответствующего размера шрифта или для создания соответствующего отступа. Ширина выражается числом символов. Этот атрибут часто не поддерживается.

Атрибуты, определяемые в любом другом месте

  • id, class (идентификаторы в пределах документа)
  • lang (language information), dir (направление текста)
  • title (заголовок элемента)
  • style (встроенная информация о стиле)
  • onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события)

Элемент PRE сообщает визуальным агентам пользователей, что содержащийся в нем текст "отформатирован". При обработке форматированного текста визуальные агенты пользователей:

  • Могут оставлять непечатные символы так, как они указаны.
  • Могут использовать для отображения текста шрифт с символами одинаковой ширины.
  • Могут отключать автоматическое продолжение слов.
  • Не должны отключать обработку двунаправленности.

Невизуальные агенты пользователей не обязаны учитывать дополнительные непечатные символы в содержимом элемента PRE.

Подробнее о переходе на новую строку в спецификации SGML см. в разделе замечаний о переходе на новую строку в приложении.

В приведенном выше фрагменте DTD указывается, какие элементы не могут находиться в объявлении PRE. То же самое выполняется в HTML 3.2; это предназначено для сохранения постоянного межстрочного интервала и выравнивания столбцов для текста, генерируемого с использованием шрифта с символами равной ширины. Авторам не рекомендуется изменять такую обработку с помощью таблиц стилей.

В следующем примере показана отформатированная строфа из стихотворения Шелли To a Skylark:

<PRE>
       Higher still and higher
         From the earth thou springest
       Like a cloud of fire;
         The blue deep thou wingest,
And singing still dost soar, and soaring ever singest.
</PRE>

Вот как она обычно отображается:

       Higher still and higher
         From the earth thou springest
       Like a cloud of fire;
         The blue deep thou wingest,
And singing still dost soar, and soaring ever singest.

Символ горизонтальной табуляции
Символ горизонтальной табуляции (десятичный символ 9 в [ISO10646] и [ISO88591]) обычно интерпретируется визуальными агентами пользователей как наименьшее ненулевое число пробелов, необходимое для того, чтобы сдвинуть символы на позицию табуляции, которые находятся через каждые 8 символов. Настоятельно не рекомендуется использовать горизонтальные табуляции в форматированном тексте, поскольку при редактировании установка других значений табуляции может привести к неправильному выравниванию в документах.

9.3.5 Визуальное отображение абзацев

Примечание.В следующем разделе содержится информативное описание обработки некоторыми из визуальных агентов пользователя форматированного текста. Таблицы стилей предоставляют лучшие возможности управления форматированием текста.

Визуальное генерирование абзацев зависит от агента пользователя. Обычно абзацы генерируются с выравниванием влево и неровным правым полем. Для направления текста справа налево используются другие значения по умолчанию.

Агенты пользователей HTML традиционно генерируют абзацы с непечатным символом перед абзацем и после него, например,

  Одновременно начали формироваться система нумерации,
  календарь, иероглифическое письмо и технически развитое
  искусство, все, что позже повлияло на других людей.

  В рамках этого развития или культурного прогресса
  Предклассическая эпоха подразделяется на Ранний,
  Средний и Поздний периоды, к которым можно добавить
  переходный или протоклассический период, некоторые черты
  которого будут потом присущи цивилизациям Америки.

Это отличается от стиля, используемого в романах, где первая строка каждого абзаца смещена, а интервал между последней строкой текущего абзаца и первой строкой следующего не отличается от межстрочных интервалов внутри абзаца, например,

     Одновременно начали формироваться система нумерации,
  календарь, иероглифическое письмо и технически развитое
  искусство, все, что позже повлияло на других людей.
     В рамках этого развития или культурного прогресса
  Предклассическая эпоха подразделяется на Ранний,
  Средний и Поздний периоды, к которым можно добавить
  переходный или протоклассический период, некоторые черты
  которого будут потом присущи цивилизациям Америки.

Следуя установкам браузера NCSA Mosaic, созданного в 1993 году, агенты пользователей обычно не выравнивают оба поля, частично из-за сложности этого процесса при отсутствии специальных процедур расстановки переносов. Использование таблиц стилей и шрифтов без псевдонимов с субпиксельным позиционированием обещает авторам текстов на языке HTML более широкие возможности.

Таблицы стилей предоставляют широкие возможности управления размером и стилем шрифтов, полями, расстояниями перед и после абзацев, отступом первой строки, выравниванием и многими другими аспектами. Таблица стилей агента пользователя, используемая по умолчанию, генерирует элементы P как показано выше. В принципе, можно переопределить такую генерацию абзацев, без использования символов перехода на следующую строку, которые существенно изменяют абзац. Вообще же, поскольку это может запутать читателей, так делать не рекомендуется.

По соглашению визуальные агенты HTML разбивают текстовые строки так, чтобы они входили в пределы используемых полей. Алгоритмы разбиения зависят от сценария форматирования.

В западных сценариях, например, текст должен разбиваться только в позиции, где стоит неотображаемый символ. Ранние версии агентов пользователей некорректно разбивали строки сразу же после начального тега или перед конечным тегом элемента, что приводило к нарушению пунктуации. Например, рассмотрите предложение:

   Статуя <a href="cih78">Свободы</a>, которая является ...

Разбиение строки сразу перед конечным тегом элемента A приведет к тому, что запятая будет помещена в начало следующей строки:

  Статуя Свободы
  , которая является ...

Это ошибка, поскольку в разметке в этой позиции нет неотображаемого символа.

9.4 Разметка изменений в документе: Элементы INS и DEL

<!-- INS/DEL are handled by inclusion on BODY -->
<!ELEMENT (INS|DEL) - - (%flow;)*      -- вставленный текст, удаленный текст -->
<!ATTLIST (INS|DEL)
  %attrs;                              -- %coreattrs, %i18n, %events --
  cite        %URI;          #IMPLIED  -- информация о причине изменения --
  datetime    %Datetime;     #IMPLIED  -- дата и время изменения --
  >

Начальный тег: обязателен, Конечный тег: обязателен

Определения атрибутов

cite = uri [CT]
Значением этого атрибута является адрес URI, определяющий источник документа или сообщения. Этот атрибут указывает на информацию, объясняющую причины изменения документа.
datetime = datetime [CS]
Значение этого атрибута указывает дату и время выполнения изменения.

Атрибуты, определяемые в любом другом месте

  • id, class (идентификаторы в пределах документа)
  • lang (language information), dir (направление текста)
  • title (заголовок элемента)
  • style (встроенная информация о стиле)
  • onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup (внутренние события)

Элементы INS и DEL используются для разметки вставленных или удаленных разделов документа по отношению к другой версии документа (например, в черновике законопроекта, куда юристы должны вносить поправки).

Эти два элемента необычны для HTML, поскольку они могут служить элементами уровня блока или встроенными элементами (но не теми и другими). Они могут содержать одно или несколько слов в абзаце или один или несколько элементов уровня блока - абзацев, списков и таблиц.

Это пример законопроекта о количестве депутатов у окружного шерифа - 3 исправлено на 5.

<P>
  У шерифа может быть <DEL>3</DEL><INS>5</INS> депутатов.
</P>

Элементы INS и DEL не должны включать содержимое уровня блока, если они являются встроенными элементами.

ПРИМЕР НЕДОПУСТИМОГО ИСПОЛЬЗОВАНИЯ:
Ниже показан недопустимый код HTML.

<P>
<INS><DIV>...содержимое уровня блока...</DIV></INS>
</P>

Агенты пользователей должны генерировать вставленный и удаленный текст так, чтобы изменения были очевидны. Например, вставленный текст может отображаться специальным шрифтом, удаленный текст может вообще не отображаться, отображаться перечеркнутым или со специальными пометками и т.д.

Оба примера ниже соответствуют 5 ноября 1994 года, 20 ч. 15 мин. 30 с по стандартному восточному времени США.

     1994-11-05T13:15:30Z
     1994-11-05T08:15:30-05:00

С использованием элемента INS получаем:

<INS datetime="1994-11-05T08:15:30-05:00"
        cite="http://www.foo.org/mydoc/comments.html">
Более того, последние цифры из отдела маркетинга говорят о том, что это полезная практика.
</INS>

В документе "http://www.foo.org/mydoc/comments.html" должны содержаться комментарии о том, почему эта информация помещена в документ.

Авторы также могут оставлять комментарии о вставленном или удаленном тексте для элементов INS и DELс помощью атрибута title. Агенты пользователей могут представлять эту информацию пользователю (например, в виде всплывающего сообщения). Например:

<INS datetime="1994-11-05T08:15:30-05:00"
        title="Изменено в результате комментариев Михаила А. о встрече.">
Более того, последние цифры из отдела маркетинга говорят о том, что это полезная практика.
</INS>


Основные типы данных HTML

6 Основные типы данных HTML

  1. Информация о регистре
  2. Основные типы SGML
  3. Текстовые строки
  4. URI
  5. Цвета
    1. Замечания об использовании цветов
  6. Длины
  7. Типы содержимого (типы MIME)
  8. Коды языков
  9. Кодировки символов
  10. Отдельные символы
  11. Дата и время
  12. Типы ссылок
  13. Дескрипторы устройств
  14. Данные сценариев
  15. Данные таблиц стилей
  16. Целевые имена кадров

В этом разделе спецификации описываются основные типы данных, которые могут быть содержимым элементов или значением атрибутов.

Вводную информацию о чтении HTML DTD см. раздел руководство по SGML.

6.1 Информация о регистре

Каждое определение атрибута включает информацию об учете регистра его значениями. Информация о регистре представляется следующими ключами:

CS
Значение учитывает регистр (то есть агенты пользователя по-разному интерпретируют "a" и "A").
CI
Значение не учитывает регистр (то есть агенты пользователя одинаково интерпретируют "a" и "A").
CN
Значение не зависит от регистра, например, потому что это число или символ из набора символов документа.
CA
Само определение элемента или атрибута дает информацию о регитсре.
CT
Подробнее об учете регистра см. в определении типа.

Если значением атрибута является список, ключи применяются к каждому значению в списке, если не указано обратное.

6.2 Основные типы SGML

В определении типа документа определяется синтаксис содержимого элемента HTML и значений атрибутов с использованием меток SGML (например, PCDATA, CDATA, NAME, ID и т.д.). Полные определения см. в [ISO8879]. Вот обобщенная информация о ключах:

  • CDATA - это последовательность символов из набора символов документа, она может включать character entities. Агенты пользователей должны интерпретировать значения атрибутов следующим образом:
    • Заменять character entities на символы,
    • Игнорировать перевод строки,
    • Заменять каждый возврат каретки или табуляцию на один пробел.

    Агенты пользователей могут игнорировать пробелы в начале и в конце значений атрибута CDATA (например, " myval " интерпретируется как "myval"). Авторы не должны объявлять значения атрибутов с пробелами в начала или в конце.

    На некоторые атрибутов HTML 4.0 со значениями атрибутов CDATA спецификация налагает дополнительные ограничения на множество допустимых значений атрибутов, не выраженные в DTD.

    Хотя элементы STYLE и SCRIPT используют CDATA для своей модели данных, для этих элементов агенты пользователей должны обрабатывать CDATA по-другому. Разметка и entities должны считаться текстом и передаваться в приложение как есть. Первое вхождение последовательности символов "</" (открывающий разделитель конечного тэга) считается концом содержимого элемента. В допустимых документах это будет конечный тэг элемента.

  • Метки ID и NAME должны начинаться с буквы ([A-Za-z]), за которой может следовать любое число букв, цифр ([0-9]), символов переноса ("-"), символов подчеркивания ("_"), двоеточий (":") и точек (".").
  • IDREF и IDREFS - это ссылки на метки ID, определенные другими атрибутами. IDREF - одиночная метка, а IDREFS -разделенный пробелами список меток.
  • Метки NUMBER должны содержать по крайней мере одну цифру ([0-9]).

6.3 Текстовые строки

Ряд атрибутов ( %Text; в DTD) принимают текст, который предназначается для чтения людьми. Вводную информацию об атрибутах Вы можете посмотреть в обсуждении атрибутов.

6.4 URI

В этой спецификации термин URI используется, как определено в [URI] (см. также [RFC1630]).

Помните, что URI включают URL (как определено в [RFC1738] и [RFC1808]).

Относительные URI разрешаются до полных URI с использованием основного URI. [RFC1808], раздел 3, где определен нормативный алгоритм этого процесса. Подробнее об основных URI см. в разделе основные URI в главе о ссылках.

URI представляются в DTD комбинацией символов %URI;.

URI вообще учитывают регистр. Могут быть URI, или части URI, в которых регистр не имеет значения (например, имена машин), но идентификация их может быть непроста. Пользователи должны всегда считать, что URI учитывают регистр (чтобы не ошибиться).

Информацию о символах, не входящих в набор ASCII, в значениях атрибутов URI см. в приложении.

6.5 Цвета

Значение атрибута типа "color" (%Color;) относится к определениям цветов, как указано в [SRGB]. Значение цвета может быть шестнадцатеричным числом (которому предшествует знак диеза) или одним из следующих шестнадцати названий цветов. Названия цветов учитывают регистр.

Названия цветов и значения RGB
Black = "#000000" | Green = "#008000"
Silver = "#C0C0C0" | Lime = #00FF00"
Gray = "#808080" | Olive = "#808000"
White = "#FFFFFF" | Yellow = "#FFFF00"
Maroon = "#800000" | Navy = #000080"
Red = "#FF0000" | Blue = "#0000FF"
Purple = "#800080" | Teal = "#008080"
Fuchsia = "#FF00FF" | Aqua = "#00FFFF"

То есть, значения "#800080" и "Purple" оба означают пурпурный цвет.

6.5.1 Замечания об использовании цветов

Хотя цвета могут существенно добавлять информации в документ и повышать удобство чтения, при использовании цветов имейте в виду следующие основные принципы:

  • Использование элементов и атрибутов HTML для указания цвета нежелательно. Вместо этого следует использовать таблицы стилей.
  • Не используйте комбинации цветов, вызывающие проблемы у пользователей.
  • Если Вы используете изображение в качестве фона или устанавливаете цвет фона, не забудьте становить и цвета текста.
  • Цвета, указанные в элементах BODY и FONT и в bgcolor в таблицах выгладят по-разному на разных платформах (на рабочих станциях, Mac, Windows и на панелях LCD и CRT), поэтому не рассчитывайте на определенный эффект. В будущем поддержка цветовой модели [SRGB] вместе с цветовыми профилями ICC должна устранить эти проблемы.
  • При возможности принимайте общие соглашения.

6.6 Длины

HTML определяет три типа значений длины для атрибутов:

  1. Пикселы: Значение ( %Pixels; в DTD) - это целое, представляющее число пикселов (на экране, на бумаге). Таким образом, значение "50" означает пятьдесят пикселов. Нормативную информацию об определении пиксела см. в [CSS1].
  2. Длина: Значение ( %Length; в DTD) может быть %Pixel; или доля вертикального или горизонтального расстояния в процентах. Таким образом, значение "50%" означает половину доступного пространства.
  3. МультиДлина: Значение ( %MultiLength; в DTD) может быть %Length; или относительной длиной. Относительная длина имеет форму "i*", где "i" - целое число. При распределении пространства между элементами, конкурирующими за это пространства, агенты пользователя сначала отводят место для длин, определенных в пикселах и процентах, а затем делят оставшееся место между относительными длинами. Каждая относительная длина получает часть доступного пространства, пропорциональную целому числу, предшествующему "*". Значение "*" эквивалентно "1*". Таким образом, если имеется 60 пикселов пространства после того, как агент пользователя распределит пространство для длин, определенных в пикселах и процентах, а конкурирующими относительными длинами являются 1*, 2* и 3*, 1* получит 10 пикселов, 2* - 20 пикселов, а 3* - 30 пикселов.

Значения длин не учитывают регистр.

6.7 Типы содержимого (типы MIME)

Примечание. "Тип носителя" (определенный в [RFC2045] и [RFC2046]) указывает природу связанного ресурса. Эта спецификация использует термин "тип содержимого" вместо "типа носителя" в соответствии с его использованием. Более того, в этой спецификации "тип носителя" может означать носитель, на котором агент пользователя генерирует документ.

Этот тип представлен в DTD с помощью %ContentType;.

Типы содержимого учитывают регистр.

Примеры типов содержимого включают "text/html", "image/png", "image/gif", "video/mpeg", "audio/basic", "text/tcl", "text/javascript" и "text/vbscript". Текущий список зарегистрированных типов MIME см. в [MIMETYPES].

Примечание. Тип содержимого "text/css",, хотя он и не зарегистрирован в IANA, должен использоваться, если связываемым элементом является таблица стилей [CSS1].

6.8 Коды языков

Значения атрибутов, типом которых является код языка ( %LanguageCode в DTD), относится к коду языка, как указано в [RFC1766], раздел 2. Информацию об указании кодов языков в HTML см. в разделе коды языков. В кодах языков пробелы недопустимы.

Коды языков учитывают регистр.

6.9 Кодировки символов

Атрибуты "charset" (%Charset в DTD) относятся к кодировкам символов, как описано в разделе кодировки символов. Значениями должны быть строки (например, "euc-jp") из реестра IANA (полный список см. в [CHARSETS]).

Имена кодировок символов учитывают регистр.

Агенты пользователей для определения кодировки символов внешнего ресурса должны выполнять шаги, описанные в разделе указание кодировок символов.

6.10 Отдельные символы

Определенные атрибуты вызывают отдельный символ из набора символов документа. Эти атрибуты имеют тип %Character в DTD.

Отдельные символы можно указать с помощью ссылок на символы (например, "&amp;").

6.11 Дата и время

[ISO8601] позволяет много вариантов представления даты и времени. Текущая спецификация использует один из форматов, описанных в профиле [DATETIME] для определения допустимых строк дата/время ( %Datetime в DTD).

Это следующий формат:

  ГГГГ-ММ-ДДTчч:мм:ссУЧП
где:
     ГГГГ = год из четырех цифр
     ММ  = месяц из двух цифр (01=январь и т.д.)
     ДД   = день из двух цифр (01 - 31)
     чч   = две цифры часов (00 - 23) (до/пп НЕ допускается)
     мм   = две цифры минут (00 - 59)
     сс   = две цифры секунд (00 - 59)
     УЧП  = указатель часового пояса

Указатели часового пояса:

Z
означает UTC (Общее скоординированное время). "Z" должно быть в верхнем регистре.
+чч:мм
указывает, что местное время отстоит на чч часов и мм минут от UTC вперед.
-чч:мм
указывает, что местное время отстает на чч часов и мм минут от UTC.

Указанные компоненты должны присутствовать в точности, с точно такой же пунктуацией. Помните, что буква "T" отображается в строке литерально (она должна быть в верхнем регистре), для указания начала времени, как описано в [ISO8601]

Если генерирующее приложение не знает времени с точностью до секунды, для секунд может использоваться значение "00" (при необходимости также для минут и для часов).

Примечание. [DATETIME] не касается добавочных секунд.

6.12 Типы ссылок

Авторы могут использовать следующие распознаваемые типы ссылок, перечисленные здесь вместе с условными интерпретациями. В DTD %LinkTypes означает список типов ссылок, разделенных пробелами. Символы пробелов в типах ссылок не допускаются.

Эти типы ссылок не учитывают регистр, т.е. "Alternate" означает то же, что и "alternate".

Агенты пользователей, поисковые машины и т.д. могут интерпретировать эти типы ссылок несколькими способами. Например, агенты пользователя могут предоставлять доступ к связанным документам с помощью навигационной панели.

Alternate
Обозначает альтернативные версии документа, в котором находится ссылка. Вместе с атрибутом lang означает переведенную версию документа. Вместе с атрибутом media означает версию, созданную для другого носителя.
Stylesheet
Обозначает внешнюю таблицу стилей. Подробнее см. раздел о внешних таблицах стилей. Используется вместе с типом ссылки "Alternate" для таблиц стилей, выбираемых пользователем.
Start
Обозначает первый документ в наборе. Этот тип ссылки сообщает поисковым машинам о том, какой документ автор считает началом набора.
Next
Обозначает следующий документ в линейной последовательности документов. Агенты пользователей могут предварительно загружать документ "next" для сокращения времени загрузки.
Prev
Обозначает предыдущий документ в упорядоченной серии документов. Некоторые агенты пользователей также поддерживают синоним "Previous".
Contents
Обозначает документ, служащий содержанием. Некоторые агенты пользователей также поддерживают синоним ToC (из "Table of Contents").
Index
Обозначает документ, являющийся указателем текущего документа.
Glossary
Обозначает документ - глоссарий терминов, относящихся к текущему документу.
Copyright
Обозначает замечание об авторском праве для текущего документа.
Chapter
Обозначает документ, являющийся главой в наборе документов.
Section
Обозначает документ, являющийся разделом в наборе документов.
Subsection
Обозначает документ, являющийся подразделом в наборе документов.
Appendix
Обозначает документ, являющийся приложением в наборе документов.
Help
Обозначает документ, содержащий справку (более подробная информация, ссылки на другие информационные ресурсы и т.д.)
Bookmark
Обозначает закладку. Закладка - это ссылка на ключевую точку в расширенном документе. Атрибут title может использоваться, например, для пометки закладки. Помните, что в каждом документе можно определить несколько закладок.

Авторы могут определить дополнительные типы ссылок, не описанные в этой спецификации. При этом они должны использовать профиль для указания соглашений, используемых для определения типов ссылок. Подробнее см. атрибут profile элемента HEAD.

Дальнейшее обсуждение типов ссылок см. в разделе ссылки в документах HTML.

6.13 Дескрипторы носителей

Ниже приведен список распознаваемых дескрипторов носителей ( %MediaDesc в DTD).

screen
Предназначен для экранов компьютеров, не разделенных на страницы.
tty
Предназначен для носителя с фиксированной сеткой для символов, таких как телетайпы, терминалы или переносные устройства с ограниченными возможностями отображения.
tv
Предназначен для устройств типа телевизора (низкое разрешение, цвета, ограниченные возможности прокрутки).
projection
Предназначен для проекторов.
handheld
Предназначен для карманных устройств (небольшой экран, монохромный, растровая графика, ограниченный диапазон).
print
Предназначен для страничных, непрозрачных материалов и документов, просматриваемых на экране в режиме предварительного просмотра печати.
braille
Предназначен для тактильных устройств с алфавитом Бройля.
aural
Предназначен для синтезаторов речи.
all
Для всех устройств.

В будущих версиях HTML могут быть введены новые значения и разрешены параметризованные значения. Для упрощения введения этих расширений соответствующие спецификации агенты пользователя должны иметь возможность анализировать значение атрибута media следующим образом:

  1. Значение - это разделенный запятыми список элементов. Например,
    media="screen, 3d-glasses, print and resolution > 90dpi"

    отображается в :

    "screen"
"3d-glasses"
"print and resolution > 90dpi"
  2. Каждый элемент усекается перед первым символом, не являющимся буквой кодировки US ASCII [a-zA-Z] (десятичные коды Unicode 65-90, 97-122), цифрой [0-9] (шестнадцатеричные коды Unicode 30-39) или знаком переноса (45). В данном примере получается:
    "screen"
"3d-glasses"
"print"
  3. Затем с учетом регистра проводится сверка с набором определенных выше типов дескрипторов. Агенты пользователей могут игнорировать несовпадающие элементы. В данном примере останутся только элементы screen и print.

Примечание. Таблицы стилей могут включать вариации в зависимости от носителя (например, конструкция CSS @media). В таких случаях имеет смысл использовать "media=all".

6.14 Данные сценария

Данные сценария ( %Script; в DTD) могут быть содержимым элемента SCRIPT и значением атрибутов внутренних событий. Агенты пользователей не должны оценивать данные сценариев в разметке HTML, а должны передавать эти данные ядру сценариев.

Учет регистра в данных сценариев зависит от языка сценариев.

Помните, что данные сценариев, являющиеся содержимым элемента, не могут содержать ссылок на символы, но данные сценария, являющиеся значением атрибута, могут. В приложении приводится информация об указании данных, отличных от данных HTML.

6.15 Данные таблиц стилей

Данные таблиц стилей (%StyleSheet; в DTD) могут быть содержимым элемента STYLE и значением атрибута style. Агенты пользователей не должны оценивать данные стилей в разметке HTML.

Учет регистра данных стиля зависит от языка таблиц стилей.

Помните, что данные таблиц стилей, являющиеся содержимым элемента, не могут включать ссылки на символы, но данные таблиц стилей, являющиеся значением атрибута, могут включать их. В приложении приводится дальнейшая информация об указании данных, отличных от данных HTML.

6.16 Целевые имена кадров

За исключением приведенных ниже зарезервированных имен, целевые имена кадров (%FrameTarget; в DTD) должны начинаться с алфавитных символов (a-zA-Z). Агенты пользователей должны игнорировать все остальные имена.

Следующие target names зарезервированы и имеют специальные значения.

_blank
Агенты пользователей должны загружать документ в новое окно без имени.
_self
Агенты пользователей должны загружать документ в тот же кадр, в котором находится ссылающийся на него документ.
_parent
Агенты пользователей должны загружать документ в непосредственный родительский кадр этого кадра во FRAMESET. Это значение эквивалентно _self, если текущий кадр не имеет родительского кадра.
_top
Агенты пользователей должны загружать документ в полное окно (закрывая все остальные кадры). Это значение эквивалентно _self, если у текущего кадра нет родительского кадра.


Teleport Pro Messages

 .

http://www.w3.org/: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://www.stack.ru/~julia/HTML4/cover.html: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://www.w3.org/TR/REC-html40-971218: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://www.w3.org/TR/REC-html40: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://www.w3.org/TR/PR-html40-971107: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://www.w3.org/People/Raggett: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://www.w3.org/People/Arnaud: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://www.w3.org/People/Jacobs: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://www.w3.org/TR: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://www.w3.org/MarkUp/Forums: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://www.w3.org/TR/REC-html40-971218/html40.txt: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://www.w3.org/TR/REC-html40-971218/html40.tgz: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://www.w3.org/TR/REC-html40-971218/html40.zip: This file was not retrieved by Teleport Pro, because it did not meet the project's file type specifications.

.

http://www.w3.org/TR/REC-html40-971218/html40.ps: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://www.w3.org/TR/REC-html40-971218/html40.pdf: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://www.w3.org/MarkUp/html40-updates/translations.html: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://www.w3.org/MarkUp/html40-updates/html40-errata.html: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://www.citforum.ru/internet/html40/style/default.css: This file was not retrieved by Teleport Pro, because it did not meet the project's file type specifications.

.

http://www.lcs.mit.edu/: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://www.inria.fr/: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://www.keio.ac.jp/: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://www.tdb.uu.se/~jan/html2ps.html: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://www.w3.org/TR/REC-CSS1-961217: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://www.w3.org/TR/NOTE-datetime: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://ds.internic.net/rfc/rfc1700.txt: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://www.iso.ch/cate/d4766.html: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://www.sil.org/sgml/iso639a.html: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://www.iso.ch/cate/d16387.html: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

ftp://ftp.isi.edu/in-notes/iana/assignments/media-types/: This file was not retrieved by Teleport Pro, because it is addressed using an unsupported protocol (e.g., gopher or ftp).

.

http://ds.internic.net/rfc/rfc1555.txt: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://ds.internic.net/rfc/rfc1556.txt: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://ds.internic.net/rfc/rfc1738.txt: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://ds.internic.net/rfc/rfc1766.txt: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://ds.internic.net/rfc/rfc1808.txt: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://ds.internic.net/rfc/rfc2044.txt: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://ds.internic.net/rfc/rfc2045.txt: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://ds.internic.net/rfc/rfc2046.txt: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://ds.internic.net/rfc/rfc2068.txt: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://ds.internic.net/rfc/rfc2119.txt: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://ds.internic.net/rfc/rfc2141.txt: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://www.w3.org/Graphics/Color/sRGB: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://www.unicode.org/unicode/uni2errata/bidi.htm: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://www.unicode.org/: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://www.ics.uci.edu/pub/ietf/uri/draft-fielding-uri-syntax-01.txt: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://www.sgmlsource.com/8879rev/n1929.htm: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://navysgml.dt.navy.mil/cals.html: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

ftp://ftp.isi.edu/in-notes/iana/assignments/character-sets: This file was not retrieved by Teleport Pro, because it is addressed using an unsupported protocol (e.g., gopher or ftp).

.

http://www.w3.org/TR/WD-CSS2/: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://purl.org/metadata/dublin_core: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://www.w3.org/MarkUp/html3/CoverPage: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://www.w3.org/TR/REC-html32: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://www.w3.org/TR/WD-style: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://www.w3.org/TR/WD-html-lex: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://www.w3.org/PICS/: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://www.w3.org/Metadata/RDF/: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://ds.internic.net/rfc/rfc822.txt: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://ds.internic.net/rfc/rfc850.txt: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://ds.internic.net/rfc/rfc1468.txt: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://ds.internic.net/rfc/rfc1630.txt: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://ds.internic.net/rfc/rfc1866.txt: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://ds.internic.net/rfc/rfc1867.txt: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

ftp://ftp.ietf.org/internet-drafts/draft-masinter-form-data-01.txt: This file was not retrieved by Teleport Pro, because it is addressed using an unsupported protocol (e.g., gopher or ftp).

.

http://ds.internic.net/rfc/rfc1942.txt: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://ds.internic.net/rfc/rfc2048.txt: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://ds.internic.net/rfc/rfc2070.txt: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://www.sgmlopen.org/: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

ftp://ftp.jclark.com/pub/sp/: This file was not retrieved by Teleport Pro, because it is addressed using an unsupported protocol (e.g., gopher or ftp).

.

http://www.jclark.com/: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://www.w3.org/WAI: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://www.citforum.ru/internet/html40/strict.dtd: This file was not retrieved by Teleport Pro, because it did not meet the project's file type specifications.

.

http://www.citforum.ru/internet/html40/loose.dtd: This file was not retrieved by Teleport Pro, because it did not meet the project's file type specifications.

.

http://www.citforum.ru/internet/html40/HTML4.decl: This file was not retrieved by Teleport Pro, because it did not meet the project's file type specifications.

.

http://www.citforum.ru/internet/html40/frameset.dtd: This file was not retrieved by Teleport Pro, because it did not meet the project's file type specifications.

.

http://www.citforum.ru/internet/html40/HTMLspecial.ent: This file was not retrieved by Teleport Pro, because it did not meet the project's file type specifications.

.

http://www.citforum.ru/internet/html40/HTMLsymbol.ent: This file was not retrieved by Teleport Pro, because it did not meet the project's file type specifications.

.

http://www.citforum.ru/internet/html40/HTMLlat1.ent: This file was not retrieved by Teleport Pro, because it did not meet the project's file type specifications.

.

http://www.citforum.ru/internet/html40/HTML4.cat: This file was not retrieved by Teleport Pro, because it did not meet the project's file type specifications.

.

http://www.w3.org/TR/REC-html40/strict.dtd: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://www.w3.org/TR/REC-html40/loose.dtd: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://www.w3.org/TR/REC-html40/frameset.dtd: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://www.w3.org/TR/REC-html40/HTMLlat1.ent: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://www.w3.org/TR/REC-html40/HTMLsymbol.ent: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://www.w3.org/TR/REC-html40/HTMLspecial.ent: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://www.w3.org/TR/REC-html40-971218/strict.dtd: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://www.w3.org/TR/REC-html40-971218/loose.dtd: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://www.w3.org/TR/REC-html40-971218/frameset.dtd: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://www.w3.org/TR/REC-html40-971218/HTMLlat1.ent: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://www.w3.org/TR/REC-html40-971218/HTMLsymbol.ent: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.

.

http://www.w3.org/TR/REC-html40-971218/HTMLspecial.ent: This file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.